diff --git a/src/emu/machine/pic8259.c b/src/emu/machine/pic8259.c index a5f31539499..c95392da896 100644 --- a/src/emu/machine/pic8259.c +++ b/src/emu/machine/pic8259.c @@ -205,7 +205,10 @@ int pic8259_acknowledge(device_t *device) return 0; } - +UINT8 pic8259_device::inta_r() +{ + return pic8259_acknowledge(this); +} READ8_DEVICE_HANDLER( pic8259_r ) { diff --git a/src/emu/machine/pic8259.h b/src/emu/machine/pic8259.h index 6b76591f419..fc4399bd95f 100644 --- a/src/emu/machine/pic8259.h +++ b/src/emu/machine/pic8259.h @@ -46,6 +46,8 @@ public: DECLARE_WRITE_LINE_MEMBER( ir6_w ); DECLARE_WRITE_LINE_MEMBER( ir7_w ); + UINT8 inta_r(); + // access to legacy token void *token() const { assert(m_token != NULL); return m_token; } protected: diff --git a/src/mess/drivers/apricot.c b/src/mess/drivers/apricot.c index 4fad7195f14..b4fd0555ada 100644 --- a/src/mess/drivers/apricot.c +++ b/src/mess/drivers/apricot.c @@ -117,7 +117,7 @@ WRITE_LINE_MEMBER( apricot_state::apricot_pit8253_out2 ) static const struct pit8253_config apricot_pit8253_intf = { { - { XTAL_4MHz / 16, DEVCB_LINE_VCC, DEVCB_DEVICE_LINE("ic31", pic8259_ir6_w) }, + { XTAL_4MHz / 16, DEVCB_LINE_VCC, DEVCB_DEVICE_LINE_MEMBER("ic31", pic8259_device, ir6_w) }, { 0 /*XTAL_4MHz / 2*/, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(apricot_state, apricot_pit8253_out1) }, { 0 /*XTAL_4MHz / 2*/, DEVCB_LINE_VCC, DEVCB_DRIVER_LINE_MEMBER(apricot_state, apricot_pit8253_out2) } } @@ -145,7 +145,7 @@ static const z80sio_interface apricot_z80sio_intf = IRQ_CALLBACK_MEMBER(apricot_state::apricot_irq_ack) { - return pic8259_acknowledge(m_pic); + return m_pic->inta_r(); } static const struct pic8259_interface apricot_pic8259_intf = diff --git a/src/mess/drivers/apricotp.c b/src/mess/drivers/apricotp.c index 30f8fddfa34..0839ad2fb88 100644 --- a/src/mess/drivers/apricotp.c +++ b/src/mess/drivers/apricotp.c @@ -418,7 +418,7 @@ static APRICOT_KEYBOARD_INTERFACE( kb_intf ) IRQ_CALLBACK_MEMBER(fp_state::fp_irq_callback) { - return pic8259_acknowledge(m_pic); + return m_pic->inta_r(); } /* @@ -543,7 +543,7 @@ void fp_state::fdc_drq_w(bool state) WRITE_LINE_MEMBER( fp_state::busy_w ) { - if (!state) pic8259_ir6_w(m_pic, ASSERT_LINE); + if (!state) m_pic->ir6_w(ASSERT_LINE); } static const centronics_interface centronics_intf = diff --git a/src/mess/drivers/at.c b/src/mess/drivers/at.c index 93a30336c5b..3d53e4dcff3 100644 --- a/src/mess/drivers/at.c +++ b/src/mess/drivers/at.c @@ -296,7 +296,7 @@ static const at_keyboard_controller_interface keyboard_controller_intf = { DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_RESET), DEVCB_CPU_INPUT_LINE("maincpu", INPUT_LINE_A20), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir1_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir1_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, clock_write_from_mb), DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, data_write_from_mb) @@ -310,7 +310,7 @@ static const pc_kbdc_interface pc_kbdc_intf = WRITE_LINE_MEMBER( at_state::at_mc146818_irq ) { - pic8259_ir0_w(m_pic8259_slave, (state) ? 0 : 1); + m_pic8259_slave->ir0_w((state) ? 0 : 1); } const struct mc146818_interface at_mc146818_config = @@ -321,18 +321,18 @@ const struct mc146818_interface at_mc146818_config = static const isa16bus_interface isabus_intf = { // interrupts - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir2_w), // in place of irq 2 on at irq 9 is used - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir3_w), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir4_w), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir5_w), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir6_w), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir2_w), // in place of irq 2 on at irq 9 is used + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir4_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir5_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir6_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir3_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir4_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir5_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir6_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir3_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir4_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir5_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir6_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir7_w), // dma request DEVCB_DEVICE_LINE_MEMBER("dma8237_1", am9517a_device, dreq0_w), diff --git a/src/mess/drivers/cbm2.c b/src/mess/drivers/cbm2.c index 76dc65b93b1..6c771922613 100644 --- a/src/mess/drivers/cbm2.c +++ b/src/mess/drivers/cbm2.c @@ -1727,7 +1727,7 @@ static IEEE488_INTERFACE( ieee488_intf ) IRQ_CALLBACK_MEMBER(cbm2_state::pic_irq_callback) { - return pic8259_acknowledge(m_ext_pic); + return m_ext_pic->inta_r(); } static pic8259_interface ext_pic_intf = diff --git a/src/mess/drivers/iq151.c b/src/mess/drivers/iq151.c index 7e462a45f2d..a7f74824d84 100644 --- a/src/mess/drivers/iq151.c +++ b/src/mess/drivers/iq151.c @@ -221,7 +221,7 @@ ADDRESS_MAP_END INPUT_CHANGED_MEMBER(iq151_state::iq151_break) { - pic8259_ir5_w(m_pic, newval & 1); + m_pic->ir5_w(newval & 1); } /* Input ports */ @@ -324,13 +324,13 @@ WRITE_LINE_MEMBER( iq151_state::pic_set_int_line ) INTERRUPT_GEN_MEMBER(iq151_state::iq151_vblank_interrupt) { - pic8259_ir6_w(m_pic, m_vblank_irq_state & 1); + m_pic->ir6_w(m_vblank_irq_state & 1); m_vblank_irq_state ^= 1; } IRQ_CALLBACK_MEMBER(iq151_state::iq151_irq_callback) { - return pic8259_acknowledge(m_pic); + return m_pic->inta_r(); } TIMER_DEVICE_CALLBACK_MEMBER(iq151_state::cassette_timer) @@ -403,11 +403,11 @@ static const cassette_interface iq151_cassette_interface = static const iq151cart_interface iq151_cart_interface = { - DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir1_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir2_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir3_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir4_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir1_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir2_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir3_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir4_w), DEVCB_NULL }; diff --git a/src/mess/drivers/pasogo.c b/src/mess/drivers/pasogo.c index c7769fed204..41faa88a274 100644 --- a/src/mess/drivers/pasogo.c +++ b/src/mess/drivers/pasogo.c @@ -475,7 +475,7 @@ static const pit8253_config pc_pit8254_config = { 4772720/4, /* heartbeat IRQ */ DEVCB_NULL, - DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) }, { 4772720/4, /* dram refresh */ DEVCB_NULL, diff --git a/src/mess/drivers/pc1512.c b/src/mess/drivers/pc1512.c index 2edb348bd9b..02895058a3a 100644 --- a/src/mess/drivers/pc1512.c +++ b/src/mess/drivers/pc1512.c @@ -913,7 +913,7 @@ static I8237_INTERFACE( dmac_intf ) IRQ_CALLBACK_MEMBER(pc1512_state::pc1512_irq_callback) { - return pic8259_acknowledge(m_pic); + return m_pic->inta_r(); } static const struct pic8259_interface pic_intf = diff --git a/src/mess/drivers/pc88va.c b/src/mess/drivers/pc88va.c index 718bdae5ba4..974b49a02b0 100644 --- a/src/mess/drivers/pc88va.c +++ b/src/mess/drivers/pc88va.c @@ -1641,7 +1641,7 @@ static const struct pic8259_interface pc88va_pic8259_master_config = static const struct pic8259_interface pc88va_pic8259_slave_config = { - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), DEVCB_LINE_GND, DEVCB_NULL }; diff --git a/src/mess/drivers/pc9801.c b/src/mess/drivers/pc9801.c index bf3c9d1e8a0..34d7dc63556 100644 --- a/src/mess/drivers/pc9801.c +++ b/src/mess/drivers/pc9801.c @@ -2934,7 +2934,7 @@ static const struct pic8259_interface pic8259_master_config = static const struct pic8259_interface pic8259_slave_config = { - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), //TODO: check me + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), //TODO: check me DEVCB_LINE_GND, DEVCB_NULL }; diff --git a/src/mess/drivers/qx10.c b/src/mess/drivers/qx10.c index 371e273bb88..c17ec8e8981 100644 --- a/src/mess/drivers/qx10.c +++ b/src/mess/drivers/qx10.c @@ -327,7 +327,7 @@ void qx10_state::qx10_upd765_interrupt(bool state) //logerror("Interrupt from upd765: %d\n", state); // signal interrupt - pic8259_ir6_w(m_pic_m, state); + m_pic_m->ir6_w(state); } void qx10_state::drq_w(bool state) @@ -545,7 +545,7 @@ WRITE_LINE_MEMBER( qx10_state::qx10_pic8259_master_set_int_line ) READ8_MEMBER( qx10_state::get_slave_ack ) { if (offset==7) { // IRQ = 7 - return pic8259_acknowledge(m_pic_s); + return m_pic_s->inta_r(); } return 0x00; } @@ -572,7 +572,7 @@ static const struct pic8259_interface qx10_pic8259_master_config = static const struct pic8259_interface qx10_pic8259_slave_config = { - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), DEVCB_LINE_GND, DEVCB_NULL }; @@ -611,7 +611,7 @@ WRITE8_MEMBER( qx10_state::upd7201_w ) m_keyb.led[(data & 0xe) >> 1] = data & 1; printf("keyb Set led %02x %s\n",((data & 0xe) >> 1),data & 1 ? "on" : "off"); m_keyb.rx = (data & 0xf) | 0xc0; - pic8259_ir4_w(machine().device("pic8259_master"), 1); + m_pic_m->ir4_w(1); break; case 0x60: printf("keyb Read LED status\n"); @@ -702,7 +702,7 @@ INPUT_CHANGED_MEMBER(qx10_state::key_stroke) if(newval && !oldval) { m_keyb.rx = (UINT8)(FPTR)(param) & 0x7f; - pic8259_ir4_w(machine().device("pic8259_master"), 1); + m_pic_m->ir4_w(1); } if(oldval && !newval) diff --git a/src/mess/drivers/trs80m2.c b/src/mess/drivers/trs80m2.c index 5d29c462f9e..8a3ad2420bd 100644 --- a/src/mess/drivers/trs80m2.c +++ b/src/mess/drivers/trs80m2.c @@ -725,7 +725,7 @@ static const z80_daisy_config trs80m2_daisy_chain[] = IRQ_CALLBACK_MEMBER(trs80m16_state::trs80m16_irq_callback) { - return pic8259_acknowledge(m_pic); + return m_pic->inta_r(); } static const struct pic8259_interface pic_intf = diff --git a/src/mess/drivers/victor9k.c b/src/mess/drivers/victor9k.c index 9d004652d5e..47ff55ec66f 100644 --- a/src/mess/drivers/victor9k.c +++ b/src/mess/drivers/victor9k.c @@ -119,7 +119,7 @@ static MC6845_INTERFACE( hd46505s_intf ) DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w), NULL }; @@ -139,15 +139,15 @@ static const struct pit8253_config pit_intf = { 2500000, DEVCB_LINE_VCC, - DEVCB_DRIVER_LINE_MEMBER(victor9k_state,mux_serial_b_w) + DEVCB_DRIVER_LINE_MEMBER(victor9k_state, mux_serial_b_w) }, { 2500000, DEVCB_LINE_VCC, - DEVCB_DRIVER_LINE_MEMBER(victor9k_state,mux_serial_a_w) + DEVCB_DRIVER_LINE_MEMBER(victor9k_state, mux_serial_a_w) }, { 100000, DEVCB_LINE_VCC, - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir2_w) + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir2_w) } } }; @@ -218,7 +218,7 @@ WRITE_LINE_MEMBER( victor9k_state::ssda_irq_w ) { m_ssda_irq = state; - pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); + m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } static MC6852_INTERFACE( ssda_intf ) @@ -352,7 +352,7 @@ WRITE_LINE_MEMBER( victor9k_state::via1_irq_w ) { m_via1_irq = state; - pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); + m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } static const via6522_interface via1_intf = @@ -451,7 +451,7 @@ WRITE_LINE_MEMBER( victor9k_state::via2_irq_w ) { m_via2_irq = state; - pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); + m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } static const via6522_interface via2_intf = @@ -557,7 +557,7 @@ WRITE_LINE_MEMBER( victor9k_state::via3_irq_w ) { m_via3_irq = state; - pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); + m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } static const via6522_interface via3_intf = @@ -627,7 +627,7 @@ WRITE_LINE_MEMBER( victor9k_state::via4_irq_w ) { m_via4_irq = state; - pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); + m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } static const via6522_interface via4_intf = @@ -691,7 +691,7 @@ WRITE_LINE_MEMBER( victor9k_state::via5_irq_w ) { m_via5_irq = state; - pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); + m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } static const via6522_interface via5_intf = @@ -733,13 +733,13 @@ READ8_MEMBER( victor9k_state::via6_pa_r ) UINT8 data = 0; // track 0 drive A sense - data |= floppy_tk00_r(m_floppy0) << 1; + data |= m_floppy0->trk00_r() << 1; // track 0 drive B sense - data |= floppy_tk00_r(m_floppy1) << 3; + data |= m_floppy1->trk00_r() << 3; // write protect sense - data |= floppy_wpt_r(m_drive ? m_floppy1 : m_floppy0) << 6; + data |= (m_drive ? m_floppy1->wpt_r() : m_floppy0->wpt_r()) << 6; // disk sync detect @@ -804,7 +804,7 @@ READ8_MEMBER( victor9k_state::via6_pb_r ) // door A sense // single/double sided - data |= floppy_twosid_r(m_drive ? m_floppy1 : m_floppy0) << 5; + data |= (m_drive ? m_floppy1->twosid_r() : m_floppy0->twosid_r()) << 5; return data; } @@ -848,7 +848,7 @@ WRITE_LINE_MEMBER( victor9k_state::via6_irq_w ) { m_via6_irq = state; - pic8259_ir3_w(m_pic, m_ssda_irq | m_via1_irq | m_via2_irq | m_via3_irq | m_via4_irq | m_via5_irq | m_via6_irq); + m_pic->ir3_w(m_ssda_irq || m_via1_irq || m_via2_irq || m_via3_irq || m_via4_irq || m_via5_irq || m_via6_irq); } static const via6522_interface via6_intf = @@ -876,7 +876,7 @@ WRITE_LINE_MEMBER( victor9k_state::kbrdy_w ) { m_via2->write_cb1(state); - pic8259_ir6_w(m_pic, state ? CLEAR_LINE : ASSERT_LINE); + m_pic->ir6_w(state ? CLEAR_LINE : ASSERT_LINE); } static VICTOR9K_KEYBOARD_INTERFACE( kb_intf ) @@ -884,21 +884,6 @@ static VICTOR9K_KEYBOARD_INTERFACE( kb_intf ) DEVCB_DRIVER_LINE_MEMBER(victor9k_state, kbrdy_w) }; -// Floppy Configuration - -static const floppy_interface victor9k_floppy_interface = -{ - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - DEVCB_NULL, - FLOPPY_STANDARD_5_25_DSQD, - LEGACY_FLOPPY_OPTIONS_NAME(default), - "floppy_5_25", - NULL -}; - // IEEE-488 Interface static IEEE488_INTERFACE( ieee488_intf ) @@ -913,11 +898,15 @@ static IEEE488_INTERFACE( ieee488_intf ) DEVCB_NULL }; +static SLOT_INTERFACE_START( victor9k_floppies ) + SLOT_INTERFACE( "525qd", FLOPPY_525_QD ) +SLOT_INTERFACE_END + // Machine Initialization IRQ_CALLBACK_MEMBER(victor9k_state::victor9k_irq_callback) { - return pic8259_acknowledge(m_pic); + return m_pic->inta_r(); } void victor9k_state::machine_start() @@ -970,7 +959,8 @@ static MACHINE_CONFIG_START( victor9k, victor9k_state ) MCFG_VIA6522_ADD(M6522_4_TAG, XTAL_30MHz/30, via4_intf) MCFG_VIA6522_ADD(M6522_5_TAG, XTAL_30MHz/30, via5_intf) MCFG_VIA6522_ADD(M6522_6_TAG, XTAL_30MHz/30, via6_intf) - MCFG_LEGACY_FLOPPY_2_DRIVES_ADD(victor9k_floppy_interface) + MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":0", victor9k_floppies, "525qd", 0, floppy_image_device::default_floppy_formats) + MCFG_FLOPPY_DRIVE_ADD(I8048_TAG":1", victor9k_floppies, "525qd", 0, floppy_image_device::default_floppy_formats) MCFG_VICTOR9K_KEYBOARD_ADD(kb_intf) // internal ram diff --git a/src/mess/drivers/wangpc.c b/src/mess/drivers/wangpc.c index c549046192b..33093779db1 100644 --- a/src/mess/drivers/wangpc.c +++ b/src/mess/drivers/wangpc.c @@ -273,7 +273,7 @@ WRITE8_MEMBER( wangpc_state::timer0_irq_clr_w ) { //if (LOG) logerror("%s: Timer 0 IRQ clear\n", machine().describe_context()); - pic8259_ir0_w(m_pic, CLEAR_LINE); + m_pic->ir0_w(CLEAR_LINE); } @@ -733,19 +733,19 @@ void wangpc_state::check_level1_interrupts() { int state = !m_timer2_irq || m_epci->rxrdy_r() || m_epci->txemt_r() || !m_acknlg || !m_dav || !m_busy; - pic8259_ir1_w(m_pic, state); + m_pic->ir1_w(state); } void wangpc_state::check_level2_interrupts() { int state = !m_dma_eop || m_uart_dr || m_uart_tbre || m_fdc_dd0 || m_fdc_dd1 || m_fdc->get_irq() || m_fpu_irq || m_bus_irq2; - pic8259_ir2_w(m_pic, state); + m_pic->ir2_w(state); } -IRQ_CALLBACK_MEMBER(wangpc_state::wangpc_irq_callback) +IRQ_CALLBACK_MEMBER( wangpc_state::wangpc_irq_callback ) { - return pic8259_acknowledge(m_pic); + return m_pic->inta_r(); } static const struct pic8259_interface pic_intf = @@ -903,7 +903,7 @@ static const struct pit8253_config pit_intf = { 500000, DEVCB_LINE_VCC, - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir0_w) + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir0_w) }, { 2000000, DEVCB_LINE_VCC, @@ -1062,11 +1062,11 @@ WRITE_LINE_MEMBER( wangpc_state::bus_irq2_w ) static WANGPC_BUS_INTERFACE( bus_intf ) { DEVCB_DRIVER_LINE_MEMBER(wangpc_state, bus_irq2_w), - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir3_w), - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir4_w), - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir5_w), - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir6_w), - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir3_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir5_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir6_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir7_w), DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq1_w), DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq2_w), DEVCB_DEVICE_LINE_MEMBER(AM9517A_TAG, am9517a_device, dreq3_w), diff --git a/src/mess/drivers/z100.c b/src/mess/drivers/z100.c index 5319c1a9510..1e4fb5ed021 100644 --- a/src/mess/drivers/z100.c +++ b/src/mess/drivers/z100.c @@ -597,19 +597,19 @@ INPUT_PORTS_END IRQ_CALLBACK_MEMBER(z100_state::z100_irq_callback) { - return pic8259_acknowledge( machine().device( "pic8259_master" ) ); + return m_picm->inta_r(); } WRITE_LINE_MEMBER( z100_state::z100_pic_irq ) { - machine().device("maincpu")->execute().set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); + m_maincpu->set_input_line(0, state ? HOLD_LINE : CLEAR_LINE); // logerror("PIC#1: set IRQ line to %i\n",interrupt); } READ8_MEMBER( z100_state::get_slave_ack ) { if (offset==7) { // IRQ = 7 - return pic8259_acknowledge(m_pics); + return m_pics->inta_r(); } return 0; } @@ -623,7 +623,7 @@ static const struct pic8259_interface z100_pic8259_master_config = static const struct pic8259_interface z100_pic8259_slave_config = { - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir3_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w), DEVCB_LINE_GND, DEVCB_NULL }; diff --git a/src/mess/includes/victor9k.h b/src/mess/includes/victor9k.h index b8a4958be87..e8a9e5aa425 100644 --- a/src/mess/includes/victor9k.h +++ b/src/mess/includes/victor9k.h @@ -7,7 +7,7 @@ #include "emu.h" #include "cpu/i86/i86.h" #include "cpu/mcs48/mcs48.h" -#include "imagedev/flopdrv.h" +#include "imagedev/floppy.h" #include "machine/ram.h" #include "machine/ctronics.h" #include "machine/6522via.h" @@ -52,11 +52,11 @@ public: m_cvsd(*this, HC55516_TAG), m_crtc(*this, HD46505S_TAG), m_ram(*this, RAM_TAG), - m_floppy0(*this, FLOPPY_0), - m_floppy1(*this, FLOPPY_1), - m_kb(*this, VICTOR9K_KEYBOARD_TAG) - , - m_video_ram(*this, "video_ram"){ } + m_floppy0(*this, I8048_TAG":0:525qd"), + m_floppy1(*this, I8048_TAG":1:525qd"), + m_kb(*this, VICTOR9K_KEYBOARD_TAG), + m_video_ram(*this, "video_ram") + { } required_device m_maincpu; required_device m_fdc_cpu; @@ -68,8 +68,8 @@ public: required_device m_cvsd; required_device m_crtc; required_device m_ram; - required_device m_floppy0; - required_device m_floppy1; + required_device m_floppy0; + required_device m_floppy1; required_device m_kb; virtual void machine_start(); diff --git a/src/mess/machine/at.c b/src/mess/machine/at.c index b6a15c06da1..8b7c35113cf 100644 --- a/src/mess/machine/at.c +++ b/src/mess/machine/at.c @@ -16,7 +16,7 @@ READ8_MEMBER( at_state::get_slave_ack ) { if (offset==2) // IRQ = 2 - return pic8259_acknowledge(m_pic8259_slave); + return m_pic8259_slave->inta_r(); return 0x00; } @@ -30,7 +30,7 @@ const struct pic8259_interface at_pic8259_master_config = const struct pic8259_interface at_pic8259_slave_config = { - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir2_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w), DEVCB_LINE_GND, DEVCB_NULL }; @@ -352,7 +352,7 @@ DRIVER_INIT_MEMBER(at_state,atvga) IRQ_CALLBACK_MEMBER(at_state::at_irq_callback) { - return pic8259_acknowledge(m_pic8259_master); + return m_pic8259_master->inta_r(); } MACHINE_START_MEMBER(at_state,at) diff --git a/src/mess/machine/b2m.c b/src/mess/machine/b2m.c index 94f4c8f438f..5d6186a17fd 100644 --- a/src/mess/machine/b2m.c +++ b/src/mess/machine/b2m.c @@ -154,7 +154,7 @@ const struct pit8253_config b2m_pit8253_intf = { 0, DEVCB_NULL, - DEVCB_DEVICE_LINE("pic8259", pic8259_ir1_w) + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir1_w) }, { 2000000, diff --git a/src/mess/machine/compis.c b/src/mess/machine/compis.c index 88de15f4bdc..11c97005895 100644 --- a/src/mess/machine/compis.c +++ b/src/mess/machine/compis.c @@ -178,8 +178,8 @@ void compis_state::fdc_irq(bool state) { if (m_8259m) { - pic8259_ir0_w(m_8259m, 1); - pic8259_ir0_w(m_8259m, 0); + m_8259m->ir0_w(1); + m_8259m->ir0_w(0); } } } @@ -1272,7 +1272,7 @@ WRITE_LINE_MEMBER( compis_state::compis_pic8259_slave_set_int_line ) READ8_MEMBER( compis_state::get_slave_ack ) { if (offset==2) { // IRQ = 2 - return pic8259_acknowledge(m_8259s); + return m_8259s->inta_r(); } return 0; } @@ -1294,7 +1294,7 @@ const struct pic8259_interface compis_pic8259_slave_config = IRQ_CALLBACK_MEMBER(compis_state::compis_irq_callback) { - return pic8259_acknowledge(m_8259m); + return m_8259m->inta_r(); } diff --git a/src/mess/machine/genpc.c b/src/mess/machine/genpc.c index 619be1255f1..3344980c432 100644 --- a/src/mess/machine/genpc.c +++ b/src/mess/machine/genpc.c @@ -237,7 +237,7 @@ const struct pit8253_config pc_pit8253_config = { XTAL_14_31818MHz/12, /* heartbeat IRQ */ DEVCB_NULL, - DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) }, { XTAL_14_31818MHz/12, /* dram refresh */ DEVCB_NULL, @@ -413,7 +413,7 @@ WRITE8_MEMBER( ibm5160_mb_device::pc_ppi_portb_w ) /* If PB7 is set clear the shift register and reset the IRQ line */ if ( m_ppi_keyboard_clear ) { - pic8259_ir1_w(m_pic8259, 0); + m_pic8259->ir1_w(0); m_ppi_shift_register = 0; m_ppi_shift_enable = 1; } @@ -433,12 +433,12 @@ I8255A_INTERFACE( pc_ppi8255_interface ) static const isa8bus_interface isabus_intf = { // interrupts - DEVCB_DEVICE_LINE("pic8259", pic8259_ir2_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir3_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir4_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir5_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir6_w), - DEVCB_DEVICE_LINE("pic8259", pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir2_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir3_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir4_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir5_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir6_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir7_w), // dma request DEVCB_DEVICE_LINE_MEMBER("dma8237", am9517a_device, dreq1_w), @@ -654,7 +654,7 @@ void ibm5160_mb_device::device_start() IRQ_CALLBACK_MEMBER(ibm5160_mb_device::pc_irq_callback) { - return pic8259_acknowledge(m_pic8259); + return m_pic8259->inta_r(); } @@ -874,7 +874,7 @@ WRITE8_MEMBER( ibm5150_mb_device::pc_ppi_portb_w ) /* If PB7 is set clear the shift register and reset the IRQ line */ if ( m_ppi_keyboard_clear ) { - pic8259_ir1_w(m_pic8259, 0); + m_pic8259->ir1_w(0); m_ppi_shift_register = 0; m_ppi_shift_enable = 1; } diff --git a/src/mess/machine/irisha.c b/src/mess/machine/irisha.c index be3911df253..964b37d19b0 100644 --- a/src/mess/machine/irisha.c +++ b/src/mess/machine/irisha.c @@ -135,7 +135,7 @@ const struct pit8253_config irisha_pit8253_intf = { XTAL_16MHz / 9, DEVCB_LINE_VCC, - DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) }, { XTAL_16MHz / 9 / 8 / 8, diff --git a/src/mess/machine/mbc55x.c b/src/mess/machine/mbc55x.c index 05376e01cc0..1a0314ca3d6 100644 --- a/src/mess/machine/mbc55x.c +++ b/src/mess/machine/mbc55x.c @@ -128,7 +128,7 @@ WRITE8_MEMBER(mbc55x_state::mbcpic8259_w) IRQ_CALLBACK_MEMBER(mbc55x_state::mbc55x_irq_callback) { - return pic8259_acknowledge(m_pic); + return m_pic->inta_r(); } /* PIT8253 Configuration */ @@ -139,12 +139,12 @@ const struct pit8253_config mbc55x_pit8253_config = { PIT_C0_CLOCK, DEVCB_NULL, - DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir0_w) + DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir0_w) }, { PIT_C1_CLOCK, DEVCB_NULL, - DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir1_w) + DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir1_w) }, { PIT_C2_CLOCK, @@ -298,7 +298,7 @@ const i8251_interface mbc55x_i8251a_interface = DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE(PIC8259_TAG, pic8259_ir3_w), + DEVCB_DEVICE_LINE_MEMBER(PIC8259_TAG, pic8259_device, ir3_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL diff --git a/src/mess/machine/pc.c b/src/mess/machine/pc.c index e8b792698dc..bbebbcd848b 100644 --- a/src/mess/machine/pc.c +++ b/src/mess/machine/pc.c @@ -397,7 +397,7 @@ const struct pit8253_config ibm5150_pit8253_config = { XTAL_14_31818MHz/12, /* heartbeat IRQ */ DEVCB_NULL, - DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) }, { XTAL_14_31818MHz/12, /* dram refresh */ DEVCB_NULL, @@ -423,7 +423,7 @@ const struct pit8253_config pcjr_pit8253_config = { XTAL_14_31818MHz/12, /* heartbeat IRQ */ DEVCB_NULL, - DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) }, { XTAL_14_31818MHz/12, /* dram refresh */ DEVCB_NULL, @@ -444,7 +444,7 @@ const struct pit8253_config mc1502_pit8253_config = { XTAL_16MHz/12, /* heartbeat IRQ */ DEVCB_NULL, - DEVCB_DEVICE_LINE("pic8259", pic8259_ir0_w) + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir0_w) }, { XTAL_16MHz/12, /* serial port */ DEVCB_NULL, diff --git a/src/mess/machine/pk8020.c b/src/mess/machine/pk8020.c index c5e784fe2ca..f633f312f00 100644 --- a/src/mess/machine/pk8020.c +++ b/src/mess/machine/pk8020.c @@ -967,7 +967,7 @@ const struct pit8253_config pk8020_pit8253_intf = { (XTAL_20MHz / 8) / 164, DEVCB_NULL, - DEVCB_DEVICE_LINE("pic8259", pic8259_ir5_w) + DEVCB_DEVICE_LINE_MEMBER("pic8259", pic8259_device, ir5_w) } } }; diff --git a/src/mess/machine/s100_wunderbus.c b/src/mess/machine/s100_wunderbus.c index 93452f92278..9b29585e83a 100644 --- a/src/mess/machine/s100_wunderbus.c +++ b/src/mess/machine/s100_wunderbus.c @@ -86,7 +86,7 @@ static ins8250_interface ace1_intf = { DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir3_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir3_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL @@ -101,7 +101,7 @@ static ins8250_interface ace2_intf = { DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir4_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir4_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL @@ -116,7 +116,7 @@ static ins8250_interface ace3_intf = { DEVCB_NULL, DEVCB_NULL, - DEVCB_DEVICE_LINE(I8259A_TAG, pic8259_ir5_w), + DEVCB_DEVICE_LINE_MEMBER(I8259A_TAG, pic8259_device, ir5_w), DEVCB_NULL, DEVCB_NULL, DEVCB_NULL @@ -132,7 +132,7 @@ WRITE_LINE_MEMBER( s100_wunderbus_device::rtc_tp_w ) if (state) { m_rtc_tp = state; - pic8259_ir7_w(m_pic, m_rtc_tp); + m_pic->ir7_w(m_rtc_tp); } } @@ -301,7 +301,7 @@ void s100_wunderbus_device::device_reset() void s100_wunderbus_device::s100_vi0_w(int state) { - pic8259_ir0_w(m_pic, state); + m_pic->ir0_w(state); } @@ -311,7 +311,7 @@ void s100_wunderbus_device::s100_vi0_w(int state) void s100_wunderbus_device::s100_vi1_w(int state) { - pic8259_ir1_w(m_pic, state); + m_pic->ir1_w(state); } @@ -321,7 +321,7 @@ void s100_wunderbus_device::s100_vi1_w(int state) void s100_wunderbus_device::s100_vi2_w(int state) { - pic8259_ir2_w(m_pic, state); + m_pic->ir2_w(state); } @@ -400,7 +400,7 @@ UINT8 s100_wunderbus_device::s100_sinp_r(address_space &space, offs_t offset) // reset clock interrupt m_rtc_tp = 0; - pic8259_ir7_w(m_pic, m_rtc_tp); + m_pic->ir7_w(m_rtc_tp); break; case 3: // Parallel data IN @@ -408,7 +408,7 @@ UINT8 s100_wunderbus_device::s100_sinp_r(address_space &space, offs_t offset) case 4: // 8259 0 register case 5: // 8259 1 register - data = pic8259_r(m_pic, space, offset & 0x01); + data = m_pic->read(space, offset & 0x01); break; case 6: // not used @@ -517,7 +517,7 @@ void s100_wunderbus_device::s100_sout_w(address_space &space, offs_t offset, UIN case 4: // 8259 0 register case 5: // 8259 1 register - pic8259_w(m_pic, space, offset & 0x01, data); + m_pic->write(space, offset & 0x01, data); break; case 6: // Par. port cntrl. diff --git a/src/mess/machine/southbridge.c b/src/mess/machine/southbridge.c index 8a429a781f5..bccd53e7686 100644 --- a/src/mess/machine/southbridge.c +++ b/src/mess/machine/southbridge.c @@ -19,7 +19,7 @@ const struct pic8259_interface at_pic8259_master_config = const struct pic8259_interface at_pic8259_slave_config = { - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir2_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir2_w), DEVCB_LINE_GND, DEVCB_NULL }; @@ -75,7 +75,7 @@ static const at_keyboard_controller_interface keyboard_controller_intf = { DEVCB_CPU_INPUT_LINE(":maincpu", INPUT_LINE_RESET), DEVCB_CPU_INPUT_LINE(":maincpu", INPUT_LINE_A20), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir1_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir1_w), DEVCB_NULL, DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, clock_write_from_mb), DEVCB_DEVICE_LINE_MEMBER("pc_kbdc", pc_kbdc_device, data_write_from_mb) @@ -90,18 +90,18 @@ static const pc_kbdc_interface pc_kbdc_intf = static const isa16bus_interface isabus_intf = { // interrupts - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir2_w), // in place of irq 2 on at irq 9 is used - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir3_w), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir4_w), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir5_w), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir6_w), - DEVCB_DEVICE_LINE("pic8259_master", pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir2_w), // in place of irq 2 on at irq 9 is used + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir3_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir4_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir5_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir6_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_master", pic8259_device, ir7_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir3_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir4_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir5_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir6_w), - DEVCB_DEVICE_LINE("pic8259_slave", pic8259_ir7_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir3_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir4_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir5_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir6_w), + DEVCB_DEVICE_LINE_MEMBER("pic8259_slave", pic8259_device, ir7_w), // dma request DEVCB_DEVICE_LINE("dma8237_1", i8237_dreq0_w), @@ -183,7 +183,7 @@ southbridge_device::southbridge_device(const machine_config &mconfig, device_typ IRQ_CALLBACK_MEMBER(southbridge_device::at_irq_callback) { - return pic8259_acknowledge(m_pic8259_master); + return m_pic8259_master->inta_r(); } //------------------------------------------------- @@ -232,7 +232,7 @@ void southbridge_device::device_reset() READ8_MEMBER( southbridge_device::get_slave_ack ) { if (offset==2) // IRQ = 2 - return pic8259_acknowledge(m_pic8259_slave); + return m_pic8259_slave->inta_r(); return 0x00; } @@ -266,7 +266,7 @@ void southbridge_device::at_speaker_set_input(UINT8 data) WRITE_LINE_MEMBER( southbridge_device::at_pit8254_out0_changed ) { if (m_pic8259_master) - pic8259_ir0_w(m_pic8259_master, state); + m_pic8259_master->ir0_w(state); }