From da09a76aac01209c65752edf1f0f2d7fc20e1130 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Tue, 4 Sep 2018 04:49:01 +0200 Subject: -i8257: Removed no-longer-needed old-style configurators, nw --- src/devices/machine/i8257.h | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/devices/machine/i8257.h b/src/devices/machine/i8257.h index 8695ab932c6..93ce8df3365 100644 --- a/src/devices/machine/i8257.h +++ b/src/devices/machine/i8257.h @@ -52,17 +52,6 @@ public: DECLARE_WRITE_LINE_MEMBER( dreq2_w ); DECLARE_WRITE_LINE_MEMBER( dreq3_w ); - template devcb_base &set_out_hrq_callback(Object &&cb) { return m_out_hrq_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_tc_callback(Object &&cb) { return m_out_tc_cb.set_callback(std::forward(cb)); } - - template devcb_base &set_in_memr_callback(Object &&cb) { return m_in_memr_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_memw_callback(Object &&cb) { return m_out_memw_cb.set_callback(std::forward(cb)); } - - template devcb_base &set_in_ior_callback(Object &&cb) { return m_in_ior_cb[Ch].set_callback(std::forward(cb)); } - template devcb_base &set_out_iow_callback(Object &&cb) { return m_out_iow_cb[Ch].set_callback(std::forward(cb)); } - - template devcb_base &set_out_dack_callback(Object &&cb) { return m_out_dack_cb[Ch].set_callback(std::forward(cb)); } - auto out_hrq_cb() { return m_out_hrq_cb.bind(); } auto out_tc_cb() { return m_out_tc_cb.bind(); } auto in_memr_cb() { return m_in_memr_cb.bind(); } -- cgit v1.2.3 From 3d37224601b828e46a2950f9971f78a3c966726a Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Tue, 4 Sep 2018 04:49:13 +0200 Subject: i8279: De-MCFG, nw --- src/devices/machine/i8279.h | 41 ----------------------------------------- src/mame/drivers/akaiax80.cpp | 14 +++++++------- src/mame/drivers/i7000.cpp | 10 +++++----- src/mame/drivers/icecold.cpp | 10 +++++----- src/mame/drivers/isbc8010.cpp | 14 +++++++------- src/mame/drivers/marywu.cpp | 8 ++++---- src/mame/drivers/maygay1b.cpp | 14 +++++++------- src/mame/drivers/maygayv1.cpp | 8 ++++---- src/mame/drivers/mmd1.cpp | 12 ++++++------ src/mame/drivers/peyper.cpp | 12 ++++++------ src/mame/drivers/pg685.cpp | 12 ++++++------ src/mame/drivers/sdk85.cpp | 14 +++++++------- src/mame/drivers/sdk86.cpp | 12 ++++++------ src/mame/drivers/selz80.cpp | 12 ++++++------ src/mame/drivers/turbo.cpp | 24 ++++++++++++------------ 15 files changed, 88 insertions(+), 129 deletions(-) diff --git a/src/devices/machine/i8279.h b/src/devices/machine/i8279.h index fd78d23ed62..6deac956cfc 100644 --- a/src/devices/machine/i8279.h +++ b/src/devices/machine/i8279.h @@ -35,53 +35,12 @@ #pragma once - - - -/*************************************************************************** - DEVICE CONFIGURATION MACROS -***************************************************************************/ - -#define MCFG_I8279_OUT_IRQ_CB(_devcb) \ - downcast(*device).set_out_irq_callback(DEVCB_##_devcb); - -#define MCFG_I8279_OUT_SL_CB(_devcb) \ - downcast(*device).set_out_sl_callback(DEVCB_##_devcb); - -#define MCFG_I8279_OUT_DISP_CB(_devcb) \ - downcast(*device).set_out_disp_callback(DEVCB_##_devcb); - -#define MCFG_I8279_OUT_BD_CB(_devcb) \ - downcast(*device).set_out_bd_callback(DEVCB_##_devcb); - -#define MCFG_I8279_IN_RL_CB(_devcb) \ - downcast(*device).set_in_rl_callback(DEVCB_##_devcb); - -#define MCFG_I8279_IN_SHIFT_CB(_devcb) \ - downcast(*device).set_in_shift_callback(DEVCB_##_devcb); - -#define MCFG_I8279_IN_CTRL_CB(_devcb) \ - downcast(*device).set_in_ctrl_callback(DEVCB_##_devcb); - -/*************************************************************************** - TYPE DEFINITIONS -***************************************************************************/ - -// ======================> i8279_device - class i8279_device : public device_t { public: // construction/destruction i8279_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_sl_callback(Object &&cb) { return m_out_sl_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_disp_callback(Object &&cb) { return m_out_disp_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_bd_callback(Object &&cb) { return m_out_bd_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_rl_callback(Object &&cb) { return m_in_rl_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_shift_callback(Object &&cb) { return m_in_shift_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_ctrl_callback(Object &&cb) { return m_in_ctrl_cb.set_callback(std::forward(cb)); } auto out_irq_callback() { return m_out_irq_cb.bind(); } auto out_sl_callback() { return m_out_sl_cb.bind(); } auto out_disp_callback() { return m_out_disp_cb.bind(); } diff --git a/src/mame/drivers/akaiax80.cpp b/src/mame/drivers/akaiax80.cpp index f2dd789a289..7a53beeb242 100644 --- a/src/mame/drivers/akaiax80.cpp +++ b/src/mame/drivers/akaiax80.cpp @@ -107,13 +107,13 @@ MACHINE_CONFIG_START(ax80_state::ax80) MCFG_DEVICE_ADD(PPI0_TAG, I8255A, 0) MCFG_DEVICE_ADD(PPI1_TAG, I8255A, 0) - MCFG_DEVICE_ADD("kdc", I8279, 6554800 / 8) // Keyboard/Display Controller - //MCFG_I8279_OUT_IRQ_CB(INPUTLINE("maincpu", UPD7810_INTF1)) // irq - //MCFG_I8279_OUT_SL_CB(WRITE8(*this, ax80_state, scanlines_w)) // scan SL lines - //MCFG_I8279_OUT_DISP_CB(WRITE8(*this, ax80_state, digit_w)) // display A&B - //MCFG_I8279_IN_RL_CB(READ8(*this, ax80_state, kbd_r)) // kbd RL lines - //MCFG_I8279_IN_SHIFT_CB(VCC) // not connected - //MCFG_I8279_IN_CTRL_CB(VCC) // not connected + I8279(config, "kdc", 6554800 / 8); // Keyboard/Display Controller + //kdc.out_irq_calback().set_inputline("maincpu", UPD7810_INTF1); // irq + //kdc.out_sl_callback().set(FUNC(ax80_state::scanlines_w)); // scan SL lines + //kdc.out_disp_callback().set(FUNC(ax80_state::digit_w)); // display A&B + //kdc.in_rl_callback().set(FUNC(ax80_state::kbd_r)) // kbd RL lines + //kdc.in_shift_callback().set_constant(1); // not connected + //kdc.in_ctrl_callback().set_constant(1); // not connected MACHINE_CONFIG_END static INPUT_PORTS_START( ax80 ) diff --git a/src/mame/drivers/i7000.cpp b/src/mame/drivers/i7000.cpp index 99eecfad917..d2e06197003 100644 --- a/src/mame/drivers/i7000.cpp +++ b/src/mame/drivers/i7000.cpp @@ -380,11 +380,11 @@ MACHINE_CONFIG_START(i7000_state::i7000) MCFG_PIT8253_OUT2_HANDLER(WRITELINE("speaker", speaker_sound_device, level_w)) /* Keyboard interface */ - MCFG_DEVICE_ADD("i8279", I8279, 4000000) /* guessed value. TODO: verify on PCB */ - MCFG_I8279_OUT_SL_CB(WRITE8(*this, i7000_state, i7000_scanlines_w)) // scan SL lines - MCFG_I8279_IN_RL_CB(READ8(*this, i7000_state, i7000_kbd_r)) // kbd RL lines - MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // TODO: Shift key - MCFG_I8279_IN_CTRL_CB(CONSTANT(1)) // TODO: Ctrl key + i8279_device &kbdc(I8279(config, "i8279", 4000000)); /* guessed value. TODO: verify on PCB */ + kbdc.out_sl_callback().set(FUNC(i7000_state::i7000_scanlines_w)); // scan SL lines + kbdc.in_rl_callback().set(FUNC(i7000_state::i7000_kbd_r)); // kbd RL lines + kbdc.in_shift_callback().set_constant(1); // TODO: Shift key + kbdc.in_ctrl_callback().set_constant(1); // TODO: Ctrl key /* Cartridge slot */ MCFG_GENERIC_CARTSLOT_ADD("cardslot", generic_romram_plain_slot, "i7000_card") diff --git a/src/mame/drivers/icecold.cpp b/src/mame/drivers/icecold.cpp index 99e999300ea..79ba88d9ca6 100644 --- a/src/mame/drivers/icecold.cpp +++ b/src/mame/drivers/icecold.cpp @@ -385,11 +385,11 @@ MACHINE_CONFIG_START(icecold_state::icecold) pia2.irqa_handler().set_inputline("maincpu", M6809_IRQ_LINE); pia2.irqb_handler().set_inputline("maincpu", M6809_IRQ_LINE); - MCFG_DEVICE_ADD("i8279", I8279, XTAL(6'000'000)/4) - MCFG_I8279_OUT_IRQ_CB(WRITELINE("pia0", pia6821_device, cb1_w)) // irq - MCFG_I8279_OUT_SL_CB(WRITE8(*this, icecold_state, scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, icecold_state, digit_w)) // display A&B - MCFG_I8279_IN_RL_CB(READ8(*this, icecold_state, kbd_r)) // kbd RL lines + i8279_device &kbdc(I8279(config, "i8279", XTAL(6'000'000)/4)); + kbdc.out_irq_callback().set("pia0", FUNC(pia6821_device::cb1_w)); // irq + kbdc.out_sl_callback().set(FUNC(icecold_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(icecold_state::digit_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(icecold_state::kbd_r)); // kbd RL lines // 30Hz signal from CH-C of ay0 MCFG_TIMER_DRIVER_ADD_PERIODIC("sint_timer", icecold_state, icecold_sint_timer, attotime::from_hz(30)) diff --git a/src/mame/drivers/isbc8010.cpp b/src/mame/drivers/isbc8010.cpp index 0d54771f6df..5535f9bb504 100644 --- a/src/mame/drivers/isbc8010.cpp +++ b/src/mame/drivers/isbc8010.cpp @@ -225,13 +225,13 @@ MACHINE_CONFIG_START(isbc8010_state::isbc8010) // MCFG_AY51013_WRITE_SO_CB(WRITE8(*this, sdk80_state, nascom1_hd6402_so)) /* Devices */ -// MCFG_DEVICE_ADD("i8279", I8279, 3100000) // based on divider -// MCFG_I8279_OUT_IRQ_CB(INPUTLINE("maincpu", I8085_RST55_LINE)) // irq -// MCFG_I8279_OUT_SL_CB(WRITE8(*this, sdk80_state, scanlines_w)) // scan SL lines -// MCFG_I8279_OUT_DISP_CB(WRITE8(*this, sdk80_state, digit_w)) // display A&B -// MCFG_I8279_IN_RL_CB(READ8(*this, sdk80_state, kbd_r)) // kbd RL lines -// MCFG_I8279_IN_SHIFT_CB(VCC) // Shift key -// MCFG_I8279_IN_CTRL_CB(VCC) +// i8279_device &kbdc(I8279(config, "i8279", 3100000)); // based on divider +// kbdc.out_irq_callback().set_inputline("maincpu", I8085_RST55_LINE); // irq +// kbdc.out_sl_callback().set(FUNC(sdk80_state::scanlines_w)); // scan SL lines +// kbdc.out_disp_callback().set(FUNC(sdk80_state::digit_w)); // display A&B +// kbdc.in_rl_callback().set(FUNC(sdk80_state::kbd_r)); // kbd RL lines +// kbdc.in_shift_callback().set_constant(1); // Shift key +// kbdc.in_ctrl_callback().set_constant(1); MACHINE_CONFIG_END diff --git a/src/mame/drivers/marywu.cpp b/src/mame/drivers/marywu.cpp index ee61ae6c1f9..00cac9256d4 100644 --- a/src/mame/drivers/marywu.cpp +++ b/src/mame/drivers/marywu.cpp @@ -194,10 +194,10 @@ MACHINE_CONFIG_START(marywu_state::marywu) //TODO: figure out what each bit is mapped to in the 80c31 ports P1 and P3 /* Keyboard & display interface */ - MCFG_DEVICE_ADD("i8279", I8279, XTAL(10'738'635)) /* should it be perhaps a fraction of the XTAL clock ? */ - MCFG_I8279_OUT_SL_CB(WRITE8(*this, marywu_state, multiplex_7seg_w)) // select block of 7seg modules by multiplexing the SL scan lines - MCFG_I8279_IN_RL_CB(READ8(*this, marywu_state, keyboard_r)) // keyboard Return Lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, marywu_state, display_7seg_data_w)) + i8279_device &kbdc(I8279(config, "i8279", XTAL(10'738'635))); // should it be perhaps a fraction of the XTAL clock ? + kbdc.out_sl_callback().set(FUNC(marywu_state::multiplex_7seg_w)); // select block of 7seg modules by multiplexing the SL scan lines + kbdc.in_rl_callback().set(FUNC(marywu_state::keyboard_r)); // keyboard Return Lines + kbdc.out_disp_callback().set(FUNC(marywu_state::display_7seg_data_w)); /* Video */ config.set_default_layout(layout_marywu); diff --git a/src/mame/drivers/maygay1b.cpp b/src/mame/drivers/maygay1b.cpp index 07d86582e3b..c1ae852cbfd 100644 --- a/src/mame/drivers/maygay1b.cpp +++ b/src/mame/drivers/maygay1b.cpp @@ -811,16 +811,16 @@ MACHINE_CONFIG_START(maygay1b_state::maygay_m1) MCFG_TIMER_DRIVER_ADD_PERIODIC("nmitimer", maygay1b_state, maygay1b_nmitimer_callback, attotime::from_hz(75)) // freq? - MCFG_DEVICE_ADD("i8279", I8279, M1_MASTER_CLOCK/4) // unknown clock - MCFG_I8279_OUT_SL_CB(WRITE8(*this, maygay1b_state, scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, maygay1b_state, lamp_data_w)) // display A&B - MCFG_I8279_IN_RL_CB(READ8(*this, maygay1b_state, kbd_r)) // kbd RL lines + i8279_device &kbdc(I8279(config, "i8279", M1_MASTER_CLOCK/4)); // unknown clock + kbdc.out_sl_callback().set(FUNC(maygay1b_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(maygay1b_state::lamp_data_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(maygay1b_state::kbd_r)); // kbd RL lines #ifndef USE_MCU // on M1B there is a 2nd i8279, on M1 / M1A a 8051 handles this task! - MCFG_DEVICE_ADD("i8279_2", I8279, M1_MASTER_CLOCK/4) // unknown clock - MCFG_I8279_OUT_SL_CB(WRITE8(*this, maygay1b_state, scanlines_2_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, maygay1b_state, lamp_data_2_w)) // display A&B + i8279_device &kbdc2(I8279(config, "i8279_2", M1_MASTER_CLOCK/4)); // unknown clock + kbdc2.out_sl_callback().set(FUNC(maygay1b_state::scanlines_2_w)); // scan SL lines + kbdc2.out_disp_callback().set(FUNC(maygay1b_state::lamp_data_2_w)); // display A&B #endif MCFG_DEVICE_ADD("reel0", REEL, STARPOINT_48STEP_REEL, 1, 3, 0x09, 4) diff --git a/src/mame/drivers/maygayv1.cpp b/src/mame/drivers/maygayv1.cpp index eecd849ad8c..fb07a7e9cc6 100644 --- a/src/mame/drivers/maygayv1.cpp +++ b/src/mame/drivers/maygayv1.cpp @@ -914,10 +914,10 @@ MACHINE_CONFIG_START(maygayv1_state::maygayv1) MCFG_MC68681_IRQ_CALLBACK(WRITELINE(*this, maygayv1_state, duart_irq_handler)) MCFG_MC68681_A_TX_CALLBACK(WRITELINE(*this, maygayv1_state, duart_txa)) - MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4) // unknown clock - MCFG_I8279_OUT_SL_CB(WRITE8(*this, maygayv1_state, strobe_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, maygayv1_state, lamp_data_w)) // display A&B - MCFG_I8279_IN_RL_CB(READ8(*this, maygayv1_state, kbd_r)) // kbd RL lines + i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock + kbdc.out_sl_callback().set(FUNC(maygayv1_state::strobe_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(maygayv1_state::lamp_data_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(maygayv1_state::kbd_r)); // kbd RL lines SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/mmd1.cpp b/src/mame/drivers/mmd1.cpp index 7a47f3c8fca..6e34f766fac 100644 --- a/src/mame/drivers/mmd1.cpp +++ b/src/mame/drivers/mmd1.cpp @@ -519,12 +519,12 @@ MACHINE_CONFIG_START(mmd1_state::mmd2) config.set_default_layout(layout_mmd2); /* Devices */ - MCFG_DEVICE_ADD("i8279", I8279, 400000) // based on divider - MCFG_I8279_OUT_SL_CB(WRITE8(*this, mmd1_state, mmd2_scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, mmd1_state, mmd2_digit_w)) // display A&B - MCFG_I8279_IN_RL_CB(READ8(*this, mmd1_state, mmd2_kbd_r)) // kbd RL lines - MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // Shift key - MCFG_I8279_IN_CTRL_CB(CONSTANT(1)) + i8279_device &kbdc(I8279(config, "i8279", 400000)); // based on divider + kbdc.out_sl_callback().set(FUNC(mmd1_state::mmd2_scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(mmd1_state::mmd2_digit_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(mmd1_state::mmd2_kbd_r)); // kbd RL lines + kbdc.in_shift_callback().set_constant(1); // Shift key + kbdc.in_ctrl_callback().set_constant(1); MACHINE_CONFIG_END diff --git a/src/mame/drivers/peyper.cpp b/src/mame/drivers/peyper.cpp index 1c2da4509c6..8e0b3cbd7e9 100644 --- a/src/mame/drivers/peyper.cpp +++ b/src/mame/drivers/peyper.cpp @@ -625,12 +625,12 @@ MACHINE_CONFIG_START(peyper_state::peyper) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "ayvol", 1.0) /* Devices */ - MCFG_DEVICE_ADD("i8279", I8279, 2500000) - MCFG_I8279_OUT_SL_CB(WRITE8(*this, peyper_state, col_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, peyper_state, disp_w)) // display A&B - MCFG_I8279_IN_RL_CB(READ8(*this, peyper_state, sw_r)) // kbd RL lines - MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // Shift key - MCFG_I8279_IN_CTRL_CB(CONSTANT(1)) + i8279_device &kbdc(I8279(config, "i8279", 2500000)); + kbdc.out_sl_callback().set(FUNC(peyper_state::col_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(peyper_state::disp_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(peyper_state::sw_r)); // kbd RL lines + kbdc.in_shift_callback().set_constant(1); // Shift key + kbdc.in_ctrl_callback().set_constant(1); MACHINE_CONFIG_END // Not allowed to set up an array all at once, so we have this mess diff --git a/src/mame/drivers/pg685.cpp b/src/mame/drivers/pg685.cpp index 1ea1fd48e77..1bdc6fdc617 100644 --- a/src/mame/drivers/pg685.cpp +++ b/src/mame/drivers/pg685.cpp @@ -458,8 +458,8 @@ MACHINE_CONFIG_START(pg685_state::pg675) // rs232 port // keyboard - MCFG_DEVICE_ADD("kbdc", I8279, XTAL(12'288'000) / 6) // divider guessed - MCFG_I8279_OUT_IRQ_CB(WRITELINE("mainpic", pic8259_device, ir0_w)) + i8279_device &kbdc(I8279(config, "kbdc", XTAL(12'288'000) / 6)); // divider guessed + kbdc.out_irq_callback().set("mainpic", FUNC(pic8259_device::ir0_w)); // printer @@ -508,8 +508,8 @@ MACHINE_CONFIG_START(pg685_state::pg685) // rs232 port // keyboard - MCFG_DEVICE_ADD("kbdc", I8279, XTAL(12'288'000) / 6) // divider guessed - MCFG_I8279_OUT_IRQ_CB(WRITELINE("mainpic", pic8259_device, ir0_w)) + i8279_device &kbdc(I8279(config, "kbdc", XTAL(12'288'000) / 6)); // divider guessed + kbdc.out_irq_callback().set("mainpic", FUNC(pic8259_device::ir0_w)); // printer @@ -559,8 +559,8 @@ MACHINE_CONFIG_START(pg685_state::pg685oua12) // rs232 port // keyboard - MCFG_DEVICE_ADD("kbdc", I8279, 12288000 / 6) // wrong - MCFG_I8279_OUT_IRQ_CB(WRITELINE("mainpic", pic8259_device, ir0_w)) + i8279_device &kbdc(I8279(config, "kbdc", 12288000 / 6)); // wrong + kbdc.out_irq_callback().set("mainpic", FUNC(pic8259_device::ir0_w)); // printer diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp index dbca31faeb1..6023d6542aa 100644 --- a/src/mame/drivers/sdk85.cpp +++ b/src/mame/drivers/sdk85.cpp @@ -167,13 +167,13 @@ MACHINE_CONFIG_START(sdk85_state::sdk85) config.set_default_layout(layout_sdk85); /* Devices */ - MCFG_DEVICE_ADD("kdc", I8279, 6.144_MHz_XTAL / 2) // Keyboard/Display Controller (A13) - MCFG_I8279_OUT_IRQ_CB(INPUTLINE("maincpu", I8085_RST55_LINE)) // irq - MCFG_I8279_OUT_SL_CB(WRITE8(*this, sdk85_state, scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, sdk85_state, digit_w)) // display A&B - MCFG_I8279_IN_RL_CB(READ8(*this, sdk85_state, kbd_r)) // kbd RL lines - MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // Shift key - MCFG_I8279_IN_CTRL_CB(CONSTANT(1)) + i8279_device &kdc(I8279(config, "kdc", 6.144_MHz_XTAL / 2)); // Keyboard/Display Controller (A13) + kdc.out_irq_callback().set_inputline("maincpu", I8085_RST55_LINE); // irq + kdc.out_sl_callback().set(FUNC(sdk85_state::scanlines_w)); // scan SL lines + kdc.out_disp_callback().set(FUNC(sdk85_state::digit_w)); // display A&B + kdc.in_rl_callback().set(FUNC(sdk85_state::kbd_r)); // kbd RL lines + kdc.in_shift_callback().set_constant(1); // Shift key + kdc.in_ctrl_callback().set_constant(1); MACHINE_CONFIG_END /* ROM definition */ diff --git a/src/mame/drivers/sdk86.cpp b/src/mame/drivers/sdk86.cpp index 0e73afc4be8..7bec26e7c31 100644 --- a/src/mame/drivers/sdk86.cpp +++ b/src/mame/drivers/sdk86.cpp @@ -170,12 +170,12 @@ MACHINE_CONFIG_START(sdk86_state::sdk86) usart_clock.signal_handler().set(I8251_TAG, FUNC(i8251_device::write_txc)); usart_clock.signal_handler().append(I8251_TAG, FUNC(i8251_device::write_rxc)); - MCFG_DEVICE_ADD("i8279", I8279, 2500000) // based on divider - MCFG_I8279_OUT_SL_CB(WRITE8(*this, sdk86_state, scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, sdk86_state, digit_w)) // display A&B - MCFG_I8279_IN_RL_CB(READ8(*this, sdk86_state, kbd_r)) // kbd RL lines - MCFG_I8279_IN_SHIFT_CB(CONSTANT(0)) // Shift key - MCFG_I8279_IN_CTRL_CB(CONSTANT(0)) + i8279_device &kbdc(I8279(config, "i8279", 2500000)); // based on divider + kbdc.out_sl_callback().set(FUNC(sdk86_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(sdk86_state::digit_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(sdk86_state::kbd_r)); // kbd RL lines + kbdc.in_shift_callback().set_constant(0); // Shift key + kbdc.in_ctrl_callback().set_constant(0); MCFG_DEVICE_ADD("port1", I8255A, 0) MCFG_DEVICE_ADD("port2", I8255A, 0) diff --git a/src/mame/drivers/selz80.cpp b/src/mame/drivers/selz80.cpp index 281731e6e2f..ef9388a11e5 100644 --- a/src/mame/drivers/selz80.cpp +++ b/src/mame/drivers/selz80.cpp @@ -242,12 +242,12 @@ MACHINE_CONFIG_START(selz80_state::selz80) MCFG_RS232_DSR_HANDLER(WRITELINE("uart", i8251_device, write_dsr)) MCFG_RS232_CTS_HANDLER(WRITELINE("uart", i8251_device, write_cts)) - MCFG_DEVICE_ADD("i8279", I8279, 5000000 / 2) // based on divider - MCFG_I8279_OUT_SL_CB(WRITE8(*this, selz80_state, scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, selz80_state, digit_w)) // display A&B - MCFG_I8279_IN_RL_CB(READ8(*this, selz80_state, kbd_r)) // kbd RL lines - MCFG_I8279_IN_SHIFT_CB(CONSTANT(1)) // Shift key - MCFG_I8279_IN_CTRL_CB(CONSTANT(1)) + i8279_device &kbdc(I8279(config, "i8279", 5000000 / 2)); // based on divider + kbdc.out_sl_callback().set(FUNC(selz80_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(selz80_state::digit_w)); // display A&B + kbdc.in_rl_callback().set(FUNC(selz80_state::kbd_r)); // kbd RL lines + kbdc.in_shift_callback().set_constant(1); // Shift key + kbdc.in_ctrl_callback().set_constant(1); MACHINE_CONFIG_END MACHINE_CONFIG_START(selz80_state::dagz80) diff --git a/src/mame/drivers/turbo.cpp b/src/mame/drivers/turbo.cpp index 2b7c5c6e023..6f63ea927f2 100644 --- a/src/mame/drivers/turbo.cpp +++ b/src/mame/drivers/turbo.cpp @@ -870,10 +870,10 @@ MACHINE_CONFIG_START(turbo_state::turbo) m_i8255_3->in_pb_callback().set_ioport("DSW2"); m_i8255_3->out_pc_callback().set(FUNC(turbo_state::turbo_ppi3c_w)); - MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4) // unknown clock - MCFG_I8279_OUT_SL_CB(WRITE8(*this, turbo_state, scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, turbo_state, digit_w)) // display A&B - MCFG_I8279_IN_RL_CB(IOPORT("DSW1")) // kbd RL lines + i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock + kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(turbo_state::digit_w)); // display A&B + kbdc.in_rl_callback().set_ioport("DSW1"); // kbd RL lines ls259_device &outlatch(LS259(config, "outlatch")); // IC125 - outputs passed through CN5 outlatch.q_out_cb<0>().set(FUNC(turbo_state::coin_meter_1_w)); @@ -915,10 +915,10 @@ MACHINE_CONFIG_START(turbo_state::subroc3d) m_i8255_1->out_pb_callback().set(FUNC(turbo_state::subroc3d_sound_b_w)); m_i8255_1->out_pc_callback().set(FUNC(turbo_state::subroc3d_sound_c_w)); - MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4) // unknown clock - MCFG_I8279_OUT_SL_CB(WRITE8(*this, turbo_state, scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, turbo_state, digit_w)) // display A&B - MCFG_I8279_IN_RL_CB(IOPORT("DSW1")) // kbd RL lines + i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock + kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(turbo_state::digit_w)); // display A&B + kbdc.in_rl_callback().set_ioport("DSW1"); // kbd RL lines /* video hardware */ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_turbo) @@ -963,10 +963,10 @@ MACHINE_CONFIG_START(turbo_state::buckrog) m_i8255_1->out_pb_callback().set(FUNC(turbo_state::buckrog_sound_b_w)); m_i8255_1->out_pc_callback().set(FUNC(turbo_state::buckrog_ppi1c_w)); - MCFG_DEVICE_ADD("i8279", I8279, MASTER_CLOCK/4) // unknown clock - MCFG_I8279_OUT_SL_CB(WRITE8(*this, turbo_state, scanlines_w)) // scan SL lines - MCFG_I8279_OUT_DISP_CB(WRITE8(*this, turbo_state, digit_w)) // display A&B - MCFG_I8279_IN_RL_CB(IOPORT("DSW1")) // kbd RL lines + i8279_device &kbdc(I8279(config, "i8279", MASTER_CLOCK/4)); // unknown clock + kbdc.out_sl_callback().set(FUNC(turbo_state::scanlines_w)); // scan SL lines + kbdc.out_disp_callback().set(FUNC(turbo_state::digit_w)); // display A&B + kbdc.in_rl_callback().set_ioport("DSW1"); // kbd RL lines /* video hardware */ MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_turbo) -- cgit v1.2.3 From a4fec5051e3e76261a8f74af2ebfc9e017ee21b6 Mon Sep 17 00:00:00 2001 From: mooglyguy Date: Tue, 4 Sep 2018 05:05:06 +0200 Subject: i8291a, i8355: De-MCFG, nw --- src/devices/bus/ieee488/hp9122c.cpp | 21 ++++++----- src/devices/machine/i8291a.h | 72 ++++++------------------------------- src/devices/machine/i8355.h | 41 +++------------------ src/mame/drivers/exp85.cpp | 7 ++-- src/mame/drivers/sdk85.cpp | 4 +-- 5 files changed, 30 insertions(+), 115 deletions(-) diff --git a/src/devices/bus/ieee488/hp9122c.cpp b/src/devices/bus/ieee488/hp9122c.cpp index 5075e01a38c..794e8a36fc2 100644 --- a/src/devices/bus/ieee488/hp9122c.cpp +++ b/src/devices/bus/ieee488/hp9122c.cpp @@ -376,17 +376,16 @@ MACHINE_CONFIG_START(hp9122c_device::device_add_mconfig) MCFG_WD_FDC_INTRQ_CALLBACK(WRITELINE(*this, hp9122c_device, fdc_intrq_w)) MCFG_WD_FDC_DRQ_CALLBACK(WRITELINE(*this,hp9122c_device, fdc_drq_w)) - MCFG_DEVICE_ADD("i8291a", I8291A, XTAL(2'000'000)) - - MCFG_I8291A_EOI_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_eoi_w)) - MCFG_I8291A_DAV_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_dav_w)) - MCFG_I8291A_NRFD_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_nrfd_w)) - MCFG_I8291A_NDAC_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_ndac_w)) - MCFG_I8291A_SRQ_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_srq_w)) - MCFG_I8291A_DIO_WRITE_CB(WRITE8(*this, hp9122c_device, i8291a_dio_w)) - MCFG_I8291A_DIO_READ_CB(READ8(*this, hp9122c_device, i8291a_dio_r)) - MCFG_I8291A_INT_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_int_w)) - MCFG_I8291A_DREQ_WRITE_CB(WRITELINE(*this, hp9122c_device, i8291a_dreq_w)) + I8291A(config, m_i8291a, XTAL(2'000'000)); + m_i8291a->eoi_write().set(FUNC(hp9122c_device::i8291a_eoi_w)); + m_i8291a->dav_write().set(FUNC(hp9122c_device::i8291a_dav_w)); + m_i8291a->nrfd_write().set(FUNC(hp9122c_device::i8291a_nrfd_w)); + m_i8291a->ndac_write().set(FUNC(hp9122c_device::i8291a_ndac_w)); + m_i8291a->srq_write().set(FUNC(hp9122c_device::i8291a_srq_w)); + m_i8291a->dio_write().set(FUNC(hp9122c_device::i8291a_dio_w)); + m_i8291a->dio_read().set(FUNC(hp9122c_device::i8291a_dio_r)); + m_i8291a->int_write().set(FUNC(hp9122c_device::i8291a_int_w)); + m_i8291a->dreq_write().set(FUNC(hp9122c_device::i8291a_dreq_w)); MCFG_FLOPPY_DRIVE_ADD("floppy0" , hp9122c_floppies , "35hd" , hp9122c_floppy_formats) MCFG_FLOPPY_DRIVE_SOUND(true) diff --git a/src/devices/machine/i8291a.h b/src/devices/machine/i8291a.h index d607ff8f051..566ae4779b7 100644 --- a/src/devices/machine/i8291a.h +++ b/src/devices/machine/i8291a.h @@ -11,76 +11,24 @@ #ifndef MAME_MACHINE_I8291A_H #define MAME_MACHINE_I8291A_H - #pragma once - -#define MCFG_I8291A_INT_WRITE_CB(_write) \ - downcast(*device).set_int_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_DREQ_WRITE_CB(_write) \ - downcast(*device).set_dreq_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_TRIG_WRITE_CB(_write) \ - downcast(*device).set_trig_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_DIO_READ_CB(_read) \ - downcast(*device).set_dio_read_cb(DEVCB_##_read); - -#define MCFG_I8291A_DIO_WRITE_CB(_write) \ - downcast(*device).set_dio_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_EOI_WRITE_CB(_write) \ - downcast(*device).set_eoi_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_DAV_WRITE_CB(_write) \ - downcast(*device).set_dav_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_NRFD_WRITE_CB(_write) \ - downcast(*device).set_nrfd_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_NDAC_WRITE_CB(_write) \ - downcast(*device).set_ndac_write_cb(DEVCB_##_write); - -#define MCFG_I8291A_SRQ_WRITE_CB(_write) \ - downcast(*device).set_srq_write_cb(DEVCB_##_write); - - class i8291a_device : public device_t { public: // construction/destruction i8291a_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base& set_int_write_cb(Object &&cb) - { return m_int_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dreq_write_cb(Object &&cb) - { return m_dreq_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_trig_write_cb(Object &&cb) - { return m_trig_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_eoi_write_cb(Object &&cb) - { return m_eoi_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dav_write_cb(Object &&cb) - { return m_dav_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_nrfd_write_cb(Object &&cb) - { return m_nrfd_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_ndac_write_cb(Object &&cb) - { return m_ndac_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_srq_write_cb(Object &&cb) - { return m_srq_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dio_write_cb(Object &&cb) - { return m_dio_write_func.set_callback(std::forward(cb)); } - - template devcb_base& set_dio_read_cb(Object &&cb) - { return m_dio_read_func.set_callback(std::forward(cb)); } + auto int_write() { return m_int_write_func.bind(); } + auto dreq_write() { return m_dreq_write_func.bind(); } + auto trig_write() { return m_trig_write_func.bind(); } + auto eoi_write() { return m_eoi_write_func.bind(); } + auto dav_write() { return m_dav_write_func.bind(); } + auto nrfd_write() { return m_nrfd_write_func.bind(); } + auto ndac_write() { return m_ndac_write_func.bind(); } + auto srq_write() { return m_srq_write_func.bind(); } + auto dio_write() { return m_dio_write_func.bind(); } + auto dio_read() { return m_dio_read_func.bind(); } // Signal inputs DECLARE_WRITE_LINE_MEMBER(reset_w); diff --git a/src/devices/machine/i8355.h b/src/devices/machine/i8355.h index be2e83d17eb..9a6228d0fa0 100644 --- a/src/devices/machine/i8355.h +++ b/src/devices/machine/i8355.h @@ -34,49 +34,16 @@ #pragma once - - - -///************************************************************************* -// MACROS / CONSTANTS -///************************************************************************* - - - - -///************************************************************************* -// INTERFACE CONFIGURATION MACROS -///************************************************************************* - -#define MCFG_I8355_IN_PA_CB(_devcb) \ - downcast(*device).set_in_pa_callback(DEVCB_##_devcb); - -#define MCFG_I8355_OUT_PA_CB(_devcb) \ - downcast(*device).set_out_pa_callback(DEVCB_##_devcb); - -#define MCFG_I8355_IN_PB_CB(_devcb) \ - downcast(*device).set_in_pb_callback(DEVCB_##_devcb); - -#define MCFG_I8355_OUT_PB_CB(_devcb) \ - downcast(*device).set_out_pb_callback(DEVCB_##_devcb); - - -///************************************************************************* -// TYPE DEFINITIONS -///************************************************************************* - -// ======================> i8355_device - class i8355_device : public device_t { public: // construction/destruction i8355_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); - template devcb_base &set_in_pa_callback(Object &&cb) { return m_in_pa_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_pa_callback(Object &&cb) { return m_out_pa_cb.set_callback(std::forward(cb)); } - template devcb_base &set_in_pb_callback(Object &&cb) { return m_in_pb_cb.set_callback(std::forward(cb)); } - template devcb_base &set_out_pb_callback(Object &&cb) { return m_out_pb_cb.set_callback(std::forward(cb)); } + auto in_pa() { return m_in_pa_cb.bind(); } + auto out_pa() { return m_out_pa_cb.bind(); } + auto in_pb() { return m_in_pb_cb.bind(); } + auto out_pb() { return m_out_pb_cb.bind(); } DECLARE_READ8_MEMBER( io_r ); DECLARE_WRITE8_MEMBER( io_w ); diff --git a/src/mame/drivers/exp85.cpp b/src/mame/drivers/exp85.cpp index a6c4eea8cf6..f83b43f7306 100644 --- a/src/mame/drivers/exp85.cpp +++ b/src/mame/drivers/exp85.cpp @@ -196,9 +196,10 @@ MACHINE_CONFIG_START(exp85_state::exp85) /* devices */ I8155(config, I8155_TAG, 6.144_MHz_XTAL/2); - MCFG_DEVICE_ADD(I8355_TAG, I8355, 6.144_MHz_XTAL/2) - MCFG_I8355_IN_PA_CB(READ8(*this, exp85_state, i8355_a_r)) - MCFG_I8355_OUT_PA_CB(WRITE8(*this, exp85_state, i8355_a_w)) + i8355_device &i8355(I8355(config, I8355_TAG, 6.144_MHz_XTAL/2)); + i8355.in_pa().set(FUNC(exp85_state::i8355_a_r)); + i8355.out_pa().set(FUNC(exp85_state::i8355_a_w)); + MCFG_CASSETTE_ADD("cassette") MCFG_CASSETTE_DEFAULT_STATE(CASSETTE_STOPPED | CASSETTE_MOTOR_ENABLED | CASSETTE_SPEAKER_MUTED) diff --git a/src/mame/drivers/sdk85.cpp b/src/mame/drivers/sdk85.cpp index 6023d6542aa..8115b0b9a42 100644 --- a/src/mame/drivers/sdk85.cpp +++ b/src/mame/drivers/sdk85.cpp @@ -154,9 +154,9 @@ MACHINE_CONFIG_START(sdk85_state::sdk85) MCFG_DEVICE_PROGRAM_MAP(sdk85_mem) MCFG_DEVICE_IO_MAP(sdk85_io) - MCFG_DEVICE_ADD("romio", I8355, 6.144_MHz_XTAL / 2) // Monitor ROM (A14) + I8355(config, "romio", 6.144_MHz_XTAL / 2); // Monitor ROM (A14) - MCFG_DEVICE_ADD("expromio", I8355, 6.144_MHz_XTAL / 2) // Expansion ROM (A15) + I8355(config, "expromio", 6.144_MHz_XTAL / 2); // Expansion ROM (A15) i8155_device &i8155(I8155(config, "ramio", 6.144_MHz_XTAL / 2)); // Basic RAM (A16) i8155.out_to_callback().set_inputline(m_maincpu, I8085_TRAP_LINE); -- cgit v1.2.3