From a53816282c3264706e5ad69f8b8b64a71e965ce9 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Fri, 13 Jul 2018 19:15:40 +1000 Subject: (nw) 6821 and 6850 have no clock for bus logic side, remove some MFCG_, fix build, tidy some stuff --- src/devices/bus/a2bus/a2pic.cpp | 24 ++++++------ src/devices/bus/adamnet/spi.cpp | 15 ++++---- src/devices/bus/apricot/keyboard/keyboard.h | 23 +++++------ src/devices/bus/centronics/ctronics.h | 24 +++++++----- src/devices/bus/dmv/k210.cpp | 38 +++++++++--------- src/devices/bus/spectrum/uspeech.cpp | 2 +- src/devices/machine/6821pia.h | 2 +- src/devices/machine/6850acia.h | 2 +- src/devices/machine/buffer.h | 2 +- src/devices/machine/pc_lpt.cpp | 48 +++++++++++------------ src/devices/machine/z80dma.h | 7 ++++ src/devices/sound/votrax.h | 1 + src/mame/drivers/apricot.cpp | 60 ++++++++++++++--------------- src/mame/drivers/aussiebyte.cpp | 37 +++++++++--------- src/mame/drivers/elwro800.cpp | 26 ++++++------- src/mame/drivers/kdt6.cpp | 51 ++++++++++++------------ src/mame/drivers/m3.cpp | 2 +- src/mame/drivers/osborne1.cpp | 54 +++++++++++++------------- src/mame/drivers/thomson.cpp | 25 ++++++------ src/mame/drivers/tiki100.cpp | 12 +++--- src/mame/drivers/wangpc.cpp | 16 ++++---- src/mame/machine/lynx.cpp | 20 ++++------ 22 files changed, 246 insertions(+), 245 deletions(-) diff --git a/src/devices/bus/a2bus/a2pic.cpp b/src/devices/bus/a2bus/a2pic.cpp index 5c86651178e..218d3ac6892 100644 --- a/src/devices/bus/a2bus/a2pic.cpp +++ b/src/devices/bus/a2bus/a2pic.cpp @@ -72,11 +72,11 @@ ioport_constructor a2bus_pic_device::device_input_ports() const //------------------------------------------------- MACHINE_CONFIG_START(a2bus_pic_device::device_add_mconfig) - MCFG_DEVICE_ADD(m_ctx, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("ctx_data_in") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, a2bus_pic_device, ack_w)) + CENTRONICS(config, m_ctx, centronics_devices, "printer"); + m_ctx->set_data_input_buffer(m_ctx_data_in); + m_ctx->ack_handler().set(FUNC(a2bus_pic_device::ack_w)); - MCFG_DEVICE_ADD("ctx_data_in", INPUT_BUFFER, 0) + INPUT_BUFFER(config, m_ctx_data_in); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("ctx_data_out", PIC_CENTRONICS_TAG) MACHINE_CONFIG_END @@ -94,18 +94,18 @@ const tiny_rom_entry *a2bus_pic_device::device_rom_region() const //************************************************************************** a2bus_pic_device::a2bus_pic_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : - a2bus_pic_device(mconfig, A2BUS_PIC, tag, owner, clock) + a2bus_pic_device(mconfig, A2BUS_PIC, tag, owner, clock) { } a2bus_pic_device::a2bus_pic_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock) : - device_t(mconfig, type, tag, owner, clock), - device_a2bus_card_interface(mconfig, *this), - m_dsw1(*this, "DSW1"), - m_ctx(*this, PIC_CENTRONICS_TAG), - m_ctx_data_in(*this, "ctx_data_in"), - m_ctx_data_out(*this, "ctx_data_out"), m_rom(nullptr), - m_started(false), m_ack(0), m_irqenable(false), m_autostrobe(false), m_timer(nullptr) + device_t(mconfig, type, tag, owner, clock), + device_a2bus_card_interface(mconfig, *this), + m_dsw1(*this, "DSW1"), + m_ctx(*this, PIC_CENTRONICS_TAG), + m_ctx_data_in(*this, "ctx_data_in"), + m_ctx_data_out(*this, "ctx_data_out"), m_rom(nullptr), + m_started(false), m_ack(0), m_irqenable(false), m_autostrobe(false), m_timer(nullptr) { } diff --git a/src/devices/bus/adamnet/spi.cpp b/src/devices/bus/adamnet/spi.cpp index 3d681653a70..eaeb9e59348 100644 --- a/src/devices/bus/adamnet/spi.cpp +++ b/src/devices/bus/adamnet/spi.cpp @@ -18,7 +18,6 @@ #define M6801_TAG "m6801" #define MC2661_TAG "mc2661" #define RS232_TAG "rs232" -#define CENTRONICS_TAG "centronics" @@ -85,10 +84,10 @@ MACHINE_CONFIG_START(adam_spi_device::device_add_mconfig) MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) - MCFG_DEVICE_ADD(CENTRONICS_TAG, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) - MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) + centronics_device ¢ronics(CENTRONICS(config, "centronics", centronics_devices, "printer")); + centronics.set_data_input_buffer("cent_data_in"); + INPUT_BUFFER(config, "cent_data_in"); + MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MACHINE_CONFIG_END @@ -102,9 +101,9 @@ MACHINE_CONFIG_END //------------------------------------------------- adam_spi_device::adam_spi_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, ADAM_SPI, tag, owner, clock), - device_adamnet_card_interface(mconfig, *this), - m_maincpu(*this, M6801_TAG) + : device_t(mconfig, ADAM_SPI, tag, owner, clock) + , device_adamnet_card_interface(mconfig, *this) + , m_maincpu(*this, M6801_TAG) { } diff --git a/src/devices/bus/apricot/keyboard/keyboard.h b/src/devices/bus/apricot/keyboard/keyboard.h index b71c2a47c5f..9395dac4855 100644 --- a/src/devices/bus/apricot/keyboard/keyboard.h +++ b/src/devices/bus/apricot/keyboard/keyboard.h @@ -34,18 +34,6 @@ -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_APRICOT_KEYBOARD_INTERFACE_ADD(_tag, _def_slot) \ - MCFG_DEVICE_ADD(_tag, APRICOT_KEYBOARD_INTERFACE, 0) \ - MCFG_DEVICE_SLOT_INTERFACE(apricot_keyboard_devices, _def_slot, false) - -#define MCFG_APRICOT_KEYBOARD_IN_HANDLER(_devcb) \ - downcast(*device).set_in_handler(DEVCB_##_devcb); - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -58,11 +46,20 @@ class apricot_keyboard_bus_device : public device_t, public device_slot_interfac { public: // construction/destruction + template + apricot_keyboard_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, T &&opts, const char *dflt) + : apricot_keyboard_bus_device(mconfig, tag, owner, 0) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } apricot_keyboard_bus_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); virtual ~apricot_keyboard_bus_device(); // callbacks - template devcb_base &set_in_handler(Object &&cb) { return m_in_handler.set_callback(std::forward(cb)); } + auto in_handler() { return m_in_handler.bind(); } // called from keyboard DECLARE_WRITE_LINE_MEMBER( in_w ) { m_in_handler(state); } diff --git a/src/devices/bus/centronics/ctronics.h b/src/devices/bus/centronics/ctronics.h index a9e9c921546..dbbaa1ee5e1 100644 --- a/src/devices/bus/centronics/ctronics.h +++ b/src/devices/bus/centronics/ctronics.h @@ -76,16 +76,6 @@ MCFG_OUTPUT_LATCH_BIT6_HANDLER(WRITELINE(_centronics_tag, centronics_device, write_data6)) \ MCFG_OUTPUT_LATCH_BIT7_HANDLER(WRITELINE(_centronics_tag, centronics_device, write_data7)) -#define MCFG_CENTRONICS_DATA_INPUT_BUFFER(_tag) \ - MCFG_CENTRONICS_DATA0_HANDLER(WRITELINE(_tag, input_buffer_device, write_bit0)) \ - MCFG_CENTRONICS_DATA1_HANDLER(WRITELINE(_tag, input_buffer_device, write_bit1)) \ - MCFG_CENTRONICS_DATA2_HANDLER(WRITELINE(_tag, input_buffer_device, write_bit2)) \ - MCFG_CENTRONICS_DATA3_HANDLER(WRITELINE(_tag, input_buffer_device, write_bit3)) \ - MCFG_CENTRONICS_DATA4_HANDLER(WRITELINE(_tag, input_buffer_device, write_bit4)) \ - MCFG_CENTRONICS_DATA5_HANDLER(WRITELINE(_tag, input_buffer_device, write_bit5)) \ - MCFG_CENTRONICS_DATA6_HANDLER(WRITELINE(_tag, input_buffer_device, write_bit6)) \ - MCFG_CENTRONICS_DATA7_HANDLER(WRITELINE(_tag, input_buffer_device, write_bit7)) - DECLARE_DEVICE_TYPE(CENTRONICS, centronics_device) class device_centronics_peripheral_interface; @@ -125,6 +115,8 @@ public: template devcb_base &set_init_handler(Object &&cb) { return m_init_handler.set_callback(std::forward(cb)); } template devcb_base &set_select_in_handler(Object &&cb) { return m_select_in_handler.set_callback(std::forward(cb)); } + auto strobe_handler() { return m_strobe_handler.bind(); } + auto ack_handler() { return m_ack_handler.bind(); } auto busy_handler() { return m_busy_handler.bind(); } auto perror_handler() { return m_perror_handler.bind(); } @@ -134,6 +126,18 @@ public: auto init_handler() { return m_init_handler.bind(); } auto select_in_handler() { return m_select_in_handler.bind(); } + template void set_data_input_buffer(T &&tag) + { + m_data0_handler.bind().set(tag, FUNC(input_buffer_device::write_bit0)); + m_data1_handler.bind().set(tag, FUNC(input_buffer_device::write_bit1)); + m_data2_handler.bind().set(tag, FUNC(input_buffer_device::write_bit2)); + m_data3_handler.bind().set(tag, FUNC(input_buffer_device::write_bit3)); + m_data4_handler.bind().set(tag, FUNC(input_buffer_device::write_bit4)); + m_data5_handler.bind().set(tag, FUNC(input_buffer_device::write_bit5)); + m_data6_handler.bind().set(tag, FUNC(input_buffer_device::write_bit6)); + m_data7_handler.bind().set(tag, FUNC(input_buffer_device::write_bit7)); + } + DECLARE_WRITE_LINE_MEMBER( write_strobe ); DECLARE_WRITE_LINE_MEMBER( write_data0 ); DECLARE_WRITE_LINE_MEMBER( write_data1 ); diff --git a/src/devices/bus/dmv/k210.cpp b/src/devices/bus/dmv/k210.cpp index 34288eb2519..6001f5d8df4 100644 --- a/src/devices/bus/dmv/k210.cpp +++ b/src/devices/bus/dmv/k210.cpp @@ -74,25 +74,25 @@ void dmv_k210_device::device_timer(emu_timer &timer, device_timer_id tid, int pa //------------------------------------------------- MACHINE_CONFIG_START(dmv_k210_device::device_add_mconfig) - MCFG_DEVICE_ADD("ppi8255", I8255, 0) - MCFG_I8255_IN_PORTA_CB(READ8(*this, dmv_k210_device, porta_r)) - MCFG_I8255_IN_PORTB_CB(READ8(*this, dmv_k210_device, portb_r)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, dmv_k210_device, portc_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8(*this, dmv_k210_device, porta_w)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, dmv_k210_device, portb_w)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, dmv_k210_device, portc_w)) - - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, dmv_k210_device, cent_ack_w)) - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, dmv_k210_device, cent_busy_w)) - MCFG_CENTRONICS_SELECT_IN_HANDLER(WRITELINE(*this, dmv_k210_device, cent_slct_w)) - MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, dmv_k210_device, cent_pe_w)) - MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, dmv_k210_device, cent_fault_w)) - MCFG_CENTRONICS_AUTOFD_HANDLER(WRITELINE(*this, dmv_k210_device, cent_autofd_w)) - MCFG_CENTRONICS_INIT_HANDLER(WRITELINE(*this, dmv_k210_device, cent_init_w)) - - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) + I8255(config, m_ppi, 0); + m_ppi->in_pa_callback().set(FUNC(dmv_k210_device::porta_r)); + m_ppi->in_pb_callback().set(FUNC(dmv_k210_device::portb_r)); + m_ppi->in_pc_callback().set(FUNC(dmv_k210_device::portc_r)); + m_ppi->out_pa_callback().set(FUNC(dmv_k210_device::porta_w)); + m_ppi->out_pb_callback().set(FUNC(dmv_k210_device::portb_w)); + m_ppi->out_pc_callback().set(FUNC(dmv_k210_device::portc_w)); + + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->set_data_input_buffer(m_cent_data_in); + m_centronics->ack_handler().set(FUNC(dmv_k210_device::cent_ack_w)); + m_centronics->busy_handler().set(FUNC(dmv_k210_device::cent_busy_w)); + m_centronics->select_in_handler().set(FUNC(dmv_k210_device::cent_slct_w)); + m_centronics->perror_handler().set(FUNC(dmv_k210_device::cent_pe_w)); + m_centronics->fault_handler().set(FUNC(dmv_k210_device::cent_fault_w)); + m_centronics->autofd_handler().set(FUNC(dmv_k210_device::cent_autofd_w)); + m_centronics->init_handler().set(FUNC(dmv_k210_device::cent_init_w)); + + INPUT_BUFFER(config, m_cent_data_in); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MACHINE_CONFIG_END diff --git a/src/devices/bus/spectrum/uspeech.cpp b/src/devices/bus/spectrum/uspeech.cpp index 4bfb32ee5ff..a07852c15c7 100644 --- a/src/devices/bus/spectrum/uspeech.cpp +++ b/src/devices/bus/spectrum/uspeech.cpp @@ -136,7 +136,7 @@ WRITE8_MEMBER(spectrum_uspeech_device::mreq_w) m_nsp->set_clock(3500000); // CK / 4 ?? break; - case 0x3001: + case 0x3001: // intonation high m_nsp->set_clock(3800000); // TODO: the exact frequency is unknown break; diff --git a/src/devices/machine/6821pia.h b/src/devices/machine/6821pia.h index 76fd7f96e2b..9f55e9b38a4 100644 --- a/src/devices/machine/6821pia.h +++ b/src/devices/machine/6821pia.h @@ -77,7 +77,7 @@ class pia6821_device : public device_t { public: // construction/destruction - pia6821_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + pia6821_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); // static configuration helpers // TODO: REMOVE THESE diff --git a/src/devices/machine/6850acia.h b/src/devices/machine/6850acia.h index 4d4086fd4af..52bdccfd9dd 100644 --- a/src/devices/machine/6850acia.h +++ b/src/devices/machine/6850acia.h @@ -27,7 +27,7 @@ class acia6850_device : public device_t { public: // construction/destruction - acia6850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + acia6850_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); // static configuration helpers template devcb_base &set_txd_handler(Object &&cb) { return m_txd_handler.set_callback(std::forward(cb)); } diff --git a/src/devices/machine/buffer.h b/src/devices/machine/buffer.h index ab08e01ba47..ca9a88e8310 100644 --- a/src/devices/machine/buffer.h +++ b/src/devices/machine/buffer.h @@ -6,7 +6,7 @@ class input_buffer_device : public device_t { public: - input_buffer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); + input_buffer_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); uint8_t read() { return m_input_data; } DECLARE_READ8_MEMBER(bus_r) { return read(); } diff --git a/src/devices/machine/pc_lpt.cpp b/src/devices/machine/pc_lpt.cpp index 5fb71bf30ca..b0f97871e87 100644 --- a/src/devices/machine/pc_lpt.cpp +++ b/src/devices/machine/pc_lpt.cpp @@ -12,8 +12,8 @@ DEFINE_DEVICE_TYPE(PC_LPT, pc_lpt_device, "pc_lpt", "PC LPT") -pc_lpt_device::pc_lpt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, PC_LPT, tag, owner, clock), +pc_lpt_device::pc_lpt_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, PC_LPT, tag, owner, clock), m_irq(1), m_data(0xff), m_control(0), m_irq_enabled(1), @@ -47,31 +47,31 @@ void pc_lpt_device::device_reset() } MACHINE_CONFIG_START(pc_lpt_device::device_add_mconfig) - MCFG_DEVICE_ADD("centronics", CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit3)) - MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit4)) - MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit5)) - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, pc_lpt_device, write_centronics_ack)) - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("cent_status_in", input_buffer_device, write_bit7)) - - MCFG_CENTRONICS_STROBE_HANDLER(WRITELINE("cent_ctrl_in", input_buffer_device, write_bit0)) - MCFG_CENTRONICS_AUTOFD_HANDLER(WRITELINE("cent_ctrl_in", input_buffer_device, write_bit1)) - MCFG_CENTRONICS_INIT_HANDLER(WRITELINE("cent_ctrl_in", input_buffer_device, write_bit2)) - MCFG_CENTRONICS_SELECT_IN_HANDLER(WRITELINE("cent_ctrl_in", input_buffer_device, write_bit3)) - - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) - MCFG_DEVICE_ADD("cent_ctrl_in", INPUT_BUFFER, 0) - MCFG_DEVICE_ADD("cent_status_in", INPUT_BUFFER, 0) + centronics_device ¢ronics(CENTRONICS(config, "centronics", centronics_devices, "printer")); + centronics.set_data_input_buffer(m_cent_data_in); + centronics.fault_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit3)); + centronics.select_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit4)); + centronics.perror_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit5)); + centronics.ack_handler().set(FUNC(pc_lpt_device::write_centronics_ack)); + centronics.busy_handler().set(m_cent_status_in, FUNC(input_buffer_device::write_bit7)); + + centronics.strobe_handler().set(m_cent_ctrl_in, FUNC(input_buffer_device::write_bit0)); + centronics.autofd_handler().set(m_cent_ctrl_in, FUNC(input_buffer_device::write_bit1)); + centronics.init_handler().set(m_cent_ctrl_in, FUNC(input_buffer_device::write_bit2)); + centronics.select_in_handler().set(m_cent_ctrl_in, FUNC(input_buffer_device::write_bit3)); + + INPUT_BUFFER(config, m_cent_data_in); + INPUT_BUFFER(config, m_cent_ctrl_in); + INPUT_BUFFER(config, m_cent_status_in); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - MCFG_DEVICE_ADD("cent_ctrl_out", OUTPUT_LATCH, 0) - MCFG_OUTPUT_LATCH_BIT0_HANDLER(WRITELINE("centronics", centronics_device, write_strobe)) - MCFG_OUTPUT_LATCH_BIT1_HANDLER(WRITELINE("centronics", centronics_device, write_autofd)) - MCFG_OUTPUT_LATCH_BIT2_HANDLER(WRITELINE("centronics", centronics_device, write_init)) - MCFG_OUTPUT_LATCH_BIT3_HANDLER(WRITELINE("centronics", centronics_device, write_select_in)) - MCFG_OUTPUT_LATCH_BIT4_HANDLER(WRITELINE(*this, pc_lpt_device, write_irq_enabled)) + OUTPUT_LATCH(config, m_cent_ctrl_out); + m_cent_ctrl_out->bit_handler<0>().set("centronics", FUNC(centronics_device::write_strobe)); + m_cent_ctrl_out->bit_handler<1>().set("centronics", FUNC(centronics_device::write_autofd)); + m_cent_ctrl_out->bit_handler<2>().set("centronics", FUNC(centronics_device::write_init)); + m_cent_ctrl_out->bit_handler<3>().set("centronics", FUNC(centronics_device::write_select_in)); + m_cent_ctrl_out->bit_handler<4>().set(FUNC(pc_lpt_device::write_irq_enabled)); MACHINE_CONFIG_END diff --git a/src/devices/machine/z80dma.h b/src/devices/machine/z80dma.h index 02b7866463c..f6f8091e31c 100644 --- a/src/devices/machine/z80dma.h +++ b/src/devices/machine/z80dma.h @@ -84,6 +84,13 @@ public: template devcb_base &set_out_mreq_callback(Object &&cb) { return m_out_mreq_cb.set_callback(std::forward(cb)); } template devcb_base &set_in_iorq_callback(Object &&cb) { return m_in_iorq_cb.set_callback(std::forward(cb)); } template devcb_base &set_out_iorq_callback(Object &&cb) { return m_out_iorq_cb.set_callback(std::forward(cb)); } + auto out_busreq_callback() { return m_out_busreq_cb.bind(); } + auto out_int_callback() { return m_out_int_cb.bind(); } + auto out_bao_callback() { return m_out_bao_cb.bind(); } + auto in_mreq_callback() { return m_in_mreq_cb.bind(); } + auto out_mreq_callback() { return m_out_mreq_cb.bind(); } + auto in_iorq_callback() { return m_in_iorq_cb.bind(); } + auto out_iorq_callback() { return m_out_iorq_cb.bind(); } uint8_t read(); void write(uint8_t data); diff --git a/src/devices/sound/votrax.h b/src/devices/sound/votrax.h index bc6b32f5fb5..6a0ae90cdbb 100644 --- a/src/devices/sound/votrax.h +++ b/src/devices/sound/votrax.h @@ -26,6 +26,7 @@ public: votrax_sc01_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); template devcb_base &set_ar_callback(Object &&cb) { return m_ar_cb.set_callback(std::forward(cb)); } + auto ar_callback() { return m_ar_cb.bind(); } DECLARE_WRITE8_MEMBER(write); DECLARE_WRITE8_MEMBER(inflection_w); diff --git a/src/mame/drivers/apricot.cpp b/src/mame/drivers/apricot.cpp index d6e03a92627..deccf3b679d 100644 --- a/src/mame/drivers/apricot.cpp +++ b/src/mame/drivers/apricot.cpp @@ -398,15 +398,15 @@ MACHINE_CONFIG_START(apricot_state::apricot) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.0) // devices - MCFG_DEVICE_ADD("ic17", I8255A, 0) - MCFG_I8255_IN_PORTA_CB(READ8("cent_data_in", input_buffer_device, bus_r)) - MCFG_I8255_OUT_PORTA_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_I8255_OUT_PORTB_CB(WRITE8(*this, apricot_state, i8255_portb_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, apricot_state, i8255_portc_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, apricot_state, i8255_portc_w)) + I8255A(config, m_ppi, 0); + m_ppi->in_pa_callback().set("cent_data_in", FUNC(input_buffer_device::bus_r)); + m_ppi->out_pa_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + m_ppi->out_pb_callback().set(FUNC(apricot_state::i8255_portb_w)); + m_ppi->in_pc_callback().set(FUNC(apricot_state::i8255_portc_r)); + m_ppi->out_pc_callback().set(FUNC(apricot_state::i8255_portc_w)); - MCFG_DEVICE_ADD("ic31", PIC8259, 0) - MCFG_PIC8259_OUT_INT_CB(INPUTLINE("ic91", 0)) + PIC8259(config, m_pic, 0); + m_pic->out_int_callback().set_inputline(m_cpu, 0); PIT8253(config, m_pit, 0); m_pit->set_clk<0>(4_MHz_XTAL / 16); @@ -422,19 +422,18 @@ MACHINE_CONFIG_START(apricot_state::apricot) MCFG_TTL153_ZA_CB(WRITELINE("ic15", z80sio_device, rxca_w)) MCFG_TTL153_ZB_CB(WRITELINE("ic15", z80sio_device, txca_w)) - MCFG_CLOCK_ADD("ic15_rxtxcb", 4_MHz_XTAL / 16) - MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE("ic15", z80sio_device, rxtxcb_w)) + CLOCK(config, "ic15_rxtxcb", 4_MHz_XTAL / 16).signal_handler().set(m_sio, FUNC(z80sio_device::rxtxcb_w)); - MCFG_DEVICE_ADD("ic15", Z80SIO, 15_MHz_XTAL / 6) - MCFG_Z80SIO_CPU("ic91") - MCFG_Z80SIO_OUT_TXDA_CB(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_Z80SIO_OUT_DTRA_CB(WRITELINE("rs232", rs232_port_device, write_dtr)) - MCFG_Z80SIO_OUT_RTSA_CB(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_Z80SIO_OUT_WRDYA_CB(WRITELINE("ic71", i8089_device, drq2_w)) - MCFG_Z80SIO_OUT_TXDB_CB(WRITELINE("kbd", apricot_keyboard_bus_device, out_w)) - MCFG_Z80SIO_OUT_DTRB_CB(WRITELINE("ic14", ttl153_device, s0_w)) - MCFG_Z80SIO_OUT_RTSB_CB(WRITELINE("ic14", ttl153_device, s1_w)) - MCFG_Z80SIO_OUT_INT_CB(WRITELINE("ic31", pic8259_device, ir5_w)) + Z80SIO(config, m_sio, 15_MHz_XTAL / 6); + m_sio->set_cputag(m_cpu); + m_sio->out_txda_callback().set(m_rs232, FUNC(rs232_port_device::write_txd)); + m_sio->out_dtra_callback().set(m_rs232, FUNC(rs232_port_device::write_dtr)); + m_sio->out_rtsa_callback().set(m_rs232, FUNC(rs232_port_device::write_rts)); + m_sio->out_wrdya_callback().set(m_iop, FUNC(i8089_device::drq2_w)); + m_sio->out_txdb_callback().set("kbd", FUNC(apricot_keyboard_bus_device::out_w)); + m_sio->out_dtrb_callback().set("ic14", FUNC(ttl153_device::s0_w)); + m_sio->out_rtsb_callback().set("ic14", FUNC(ttl153_device::s1_w)); + m_sio->out_int_callback().set(m_pic, FUNC(pic8259_device::ir5_w)); // rs232 port RS232_PORT(config, m_rs232, default_rs232_devices, nullptr); @@ -445,19 +444,18 @@ MACHINE_CONFIG_START(apricot_state::apricot) m_rs232->cts_handler().set(m_sio, FUNC(z80sio_device::ctsa_w)).invert(); // keyboard - MCFG_APRICOT_KEYBOARD_INTERFACE_ADD("kbd", "hle") - MCFG_APRICOT_KEYBOARD_IN_HANDLER(WRITELINE("ic15", z80sio_device, rxb_w)) + APRICOT_KEYBOARD_INTERFACE(config, "kbd", apricot_keyboard_devices, "hle").in_handler().set(m_sio, FUNC(z80sio_device::rxb_w)); // centronics printer - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE("ic15", z80sio_device, ctsb_w)) - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("ic15", z80sio_device, dcdb_w)) - MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, apricot_state, write_centronics_fault)) - MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, apricot_state, write_centronics_perror)) - //MCFG_CENTRONICS_SELECT_HANDLER() // schematic page 294 says this is connected to pc4, but that is an output to the printer - - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->set_data_input_buffer("cent_data_in"); + m_centronics->ack_handler().set(m_sio, FUNC(z80sio_device::ctsb_w)); + m_centronics->busy_handler().set(m_sio, FUNC(z80sio_device::dcdb_w)); + m_centronics->fault_handler().set(FUNC(apricot_state::write_centronics_fault)); + m_centronics->perror_handler().set(FUNC(apricot_state::write_centronics_perror)); + //m_centronics->select_handler().set(); // schematic page 294 says this is connected to pc4, but that is an output to the printer + + INPUT_BUFFER(config, "cent_data_in"); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") // floppy diff --git a/src/mame/drivers/aussiebyte.cpp b/src/mame/drivers/aussiebyte.cpp index 82932a19a88..4ac252dac0f 100644 --- a/src/mame/drivers/aussiebyte.cpp +++ b/src/mame/drivers/aussiebyte.cpp @@ -513,17 +513,16 @@ MACHINE_CONFIG_START(aussiebyte_state::aussiebyte) /* sound hardware */ SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_DEVICE_ADD("votrax", VOTRAX_SC01, 720000) /* 720kHz? needs verify */ - MCFG_VOTRAX_SC01_REQUEST_CB(WRITELINE(*this, aussiebyte_state, votrax_w)) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) + SPEAKER_SOUND(config, m_speaker).add_route(ALL_OUTPUTS, "mono", 0.50); + VOTRAX_SC01(config, m_votrax, 720000); // 720kHz? needs verify + m_votrax->ar_callback().set(FUNC(aussiebyte_state::votrax_w)); + m_votrax->add_route(ALL_OUTPUTS, "mono", 1.00); /* devices */ - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, aussiebyte_state, write_centronics_busy)) - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->set_data_input_buffer("cent_data_in"); + m_centronics->busy_handler().set(FUNC(aussiebyte_state::write_centronics_busy)); + INPUT_BUFFER(config, "cent_data_in"); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") clock_device &ctc_clock(CLOCK(config, "ctc_clock", 4.9152_MHz_XTAL / 4)); @@ -541,14 +540,14 @@ MACHINE_CONFIG_START(aussiebyte_state::aussiebyte) m_ctc->zc_callback<2>().set(FUNC(aussiebyte_state::ctc_z2_w)); // SIO2 Ch B, CTC Ch 3 m_ctc->zc_callback<2>().append("sio2", FUNC(z80sio_device::rxtxcb_w)); - MCFG_DEVICE_ADD("dma", Z80DMA, 16_MHz_XTAL / 4) - MCFG_Z80DMA_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(*this, aussiebyte_state, busreq_w)) + Z80DMA(config, m_dma, 16_MHz_XTAL / 4); + m_dma->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_dma->out_busreq_callback().set(FUNC(aussiebyte_state::busreq_w)); // BAO, not used - MCFG_Z80DMA_IN_MREQ_CB(READ8(*this, aussiebyte_state, memory_read_byte)) - MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(*this, aussiebyte_state, memory_write_byte)) - MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, aussiebyte_state, io_read_byte)) - MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, aussiebyte_state, io_write_byte)) + m_dma->in_mreq_callback().set(FUNC(aussiebyte_state::memory_read_byte)); + m_dma->out_mreq_callback().set(FUNC(aussiebyte_state::memory_write_byte)); + m_dma->in_iorq_callback().set(FUNC(aussiebyte_state::io_read_byte)); + m_dma->out_iorq_callback().set(FUNC(aussiebyte_state::io_write_byte)); Z80PIO(config, m_pio1, 16_MHz_XTAL / 4); m_pio1->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); @@ -556,9 +555,9 @@ MACHINE_CONFIG_START(aussiebyte_state::aussiebyte) m_pio1->in_pb_callback().set("cent_data_in", FUNC(input_buffer_device::bus_r)); m_pio1->out_ardy_callback().set(m_centronics, FUNC(centronics_device::write_strobe)).invert(); - MCFG_DEVICE_ADD("pio2", Z80PIO, 16_MHz_XTAL / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, aussiebyte_state, port20_w)) + Z80PIO(config, m_pio2, 16_MHz_XTAL / 4); + m_pio2->out_int_callback().set_inputline(m_maincpu, INPUT_LINE_IRQ0); + m_pio2->out_pa_callback().set(FUNC(aussiebyte_state::port20_w)); MCFG_DEVICE_ADD("sio1", Z80SIO, 16_MHz_XTAL / 4) MCFG_Z80SIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) diff --git a/src/mame/drivers/elwro800.cpp b/src/mame/drivers/elwro800.cpp index 5fea91d80ba..3842f554e5c 100644 --- a/src/mame/drivers/elwro800.cpp +++ b/src/mame/drivers/elwro800.cpp @@ -593,26 +593,26 @@ MACHINE_CONFIG_START(elwro800_state::elwro800) MCFG_PALETTE_INIT_OWNER(elwro800_state, spectrum ) MCFG_DEVICE_ADD("gfxdecode", GFXDECODE, "palette", gfx_elwro800) - MCFG_VIDEO_START_OVERRIDE(elwro800_state, spectrum ) + MCFG_VIDEO_START_OVERRIDE(elwro800_state, spectrum) - MCFG_UPD765A_ADD("upd765", true, true) + UPD765A(config, "upd765", true, true); - MCFG_DEVICE_ADD("ppi8255", I8255A, 0) - MCFG_I8255_IN_PORTA_CB(IOPORT("JOY")) - MCFG_I8255_IN_PORTB_CB(READ8("cent_data_in", input_buffer_device, bus_r)) - MCFG_I8255_OUT_PORTB_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) - MCFG_I8255_IN_PORTC_CB(READ8(*this, elwro800_state, i8255_port_c_r)) - MCFG_I8255_OUT_PORTC_CB(WRITE8(*this, elwro800_state, i8255_port_c_w)) + I8255A(config, m_i8255, 0); + m_i8255->in_pa_callback().set_ioport("JOY"); + m_i8255->in_pb_callback().set("cent_data_in", FUNC(input_buffer_device::bus_r)); + m_i8255->out_pb_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); + m_i8255->in_pc_callback().set(FUNC(elwro800_state::i8255_port_c_r)); + m_i8255->out_pc_callback().set(FUNC(elwro800_state::i8255_port_c_w)); /* printer */ - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, elwro800_state, write_centronics_ack)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->set_data_input_buffer("cent_data_in"); + m_centronics->ack_handler().set(FUNC(elwro800_state::write_centronics_ack)); - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) + INPUT_BUFFER(config, "cent_data_in"); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") - MCFG_DEVICE_ADD("i8251", I8251, 0) + I8251(config, m_i8251, 0); /* sound hardware */ SPEAKER(config, "mono").front_center(); diff --git a/src/mame/drivers/kdt6.cpp b/src/mame/drivers/kdt6.cpp index 9be939079ad..e2f4be5934a 100644 --- a/src/mame/drivers/kdt6.cpp +++ b/src/mame/drivers/kdt6.cpp @@ -638,38 +638,37 @@ MACHINE_CONFIG_START(kdt6_state::psi98) // sound hardware SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD("beeper", BEEP, 1000) // frequency unknown - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) - MCFG_DEVICE_ADD("speaker", SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.50) + BEEP(config, m_beeper, 1000); // frequency unknown + m_beeper->add_route(ALL_OUTPUTS, "mono", 0.50); + SPEAKER_SOUND(config, "speaker").add_route(ALL_OUTPUTS, "mono", 0.50); MCFG_TIMER_DRIVER_ADD("beep_timer", kdt6_state, beeper_off) - MCFG_DEVICE_ADD("dma", Z80DMA, XTAL(16'000'000) / 4) - MCFG_Z80DMA_OUT_BUSREQ_CB(WRITELINE(*this, kdt6_state, busreq_w)) - MCFG_Z80DMA_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80DMA_IN_MREQ_CB(READ8(*this, kdt6_state, memory_r)) - MCFG_Z80DMA_OUT_MREQ_CB(WRITE8(*this, kdt6_state, memory_w)) - MCFG_Z80DMA_IN_IORQ_CB(READ8(*this, kdt6_state, io_r)) - MCFG_Z80DMA_OUT_IORQ_CB(WRITE8(*this, kdt6_state, io_w)) + Z80DMA(config, m_dma, 16_MHz_XTAL / 4); + m_dma->out_busreq_callback().set(FUNC(kdt6_state::busreq_w)); + m_dma->out_int_callback().set_inputline(m_cpu, INPUT_LINE_IRQ0); + m_dma->in_mreq_callback().set(FUNC(kdt6_state::memory_r)); + m_dma->out_mreq_callback().set(FUNC(kdt6_state::memory_w)); + m_dma->in_iorq_callback().set(FUNC(kdt6_state::io_r)); + m_dma->out_iorq_callback().set(FUNC(kdt6_state::io_w)); // jumper J3 allows selection of 16MHz / 8 instead clock_device &uart_clk(CLOCK(config, "uart_clk", XTAL(9'830'400) / 8)); uart_clk.signal_handler().set("ctc1", FUNC(z80ctc_device::trg1)); uart_clk.signal_handler().append("ctc1", FUNC(z80ctc_device::trg2)); - z80ctc_device &ctc1(Z80CTC(config, "ctc1", XTAL(16'000'000) / 4)); + z80ctc_device &ctc1(Z80CTC(config, "ctc1", 16_MHz_XTAL / 4)); ctc1.intr_callback().set_inputline(m_cpu, INPUT_LINE_IRQ0); ctc1.zc_callback<1>().set(m_sio, FUNC(z80sio_device::rxtxcb_w)); ctc1.zc_callback<2>().set(m_sio, FUNC(z80sio_device::rxca_w)); ctc1.zc_callback<2>().append(m_sio, FUNC(z80sio_device::txca_w)); - z80ctc_device &ctc2(Z80CTC(config, "ctc2", XTAL(16'000'000) / 4)); + z80ctc_device &ctc2(Z80CTC(config, "ctc2", 16_MHz_XTAL / 4)); ctc2.intr_callback().set_inputline(m_cpu, INPUT_LINE_IRQ0); ctc2.zc_callback<0>().set("speaker", FUNC(speaker_sound_device::level_w)); ctc2.zc_callback<2>().set("ctc2", FUNC(z80ctc_device::trg3)); - Z80SIO(config, m_sio, XTAL(16'000'000) / 4); + Z80SIO(config, m_sio, 16_MHz_XTAL / 4); m_sio->out_int_callback().set_inputline(m_cpu, INPUT_LINE_IRQ0); m_sio->out_txda_callback().set("rs232a", FUNC(rs232_port_device::write_txd)); m_sio->out_dtra_callback().set("rs232a", FUNC(rs232_port_device::write_dtr)); @@ -690,20 +689,20 @@ MACHINE_CONFIG_START(kdt6_state::psi98) m_rs232b->dsr_handler().set(m_sio, FUNC(z80sio_device::syncb_w)); m_rs232b->cts_handler().set(m_sio, FUNC(z80sio_device::ctsb_w)).invert(); - MCFG_DEVICE_ADD("pio", Z80PIO, XTAL(16'000'000) / 4) - MCFG_Z80PIO_OUT_INT_CB(INPUTLINE("maincpu", INPUT_LINE_IRQ0)) - MCFG_Z80PIO_OUT_PA_CB(WRITE8(*this, kdt6_state, pio_porta_w)) - MCFG_Z80PIO_IN_PB_CB(READ8("cent_data_in", input_buffer_device, bus_r)) - MCFG_Z80PIO_OUT_PB_CB(WRITE8("cent_data_out", output_latch_device, bus_w)) + z80pio_device &pio(Z80PIO(config, "pio", 16_MHz_XTAL / 4)); + pio.out_int_callback().set_inputline(m_cpu, INPUT_LINE_IRQ0); + pio.out_pa_callback().set(FUNC(kdt6_state::pio_porta_w)); + pio.in_pb_callback().set("cent_data_in", FUNC(input_buffer_device::bus_r)); + pio.out_pb_callback().set("cent_data_out", FUNC(output_latch_device::bus_w)); - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE("pio", z80pio_device, pa2_w)) - MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE("pio", z80pio_device, pa3_w)) - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE("pio", z80pio_device, pa4_w)) - MCFG_CENTRONICS_SELECT_HANDLER(WRITELINE("pio", z80pio_device, pa5_w)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->set_data_input_buffer("cent_data_in"); + m_centronics->fault_handler().set("pio", FUNC(z80pio_device::pa2_w)); + m_centronics->perror_handler().set("pio", FUNC(z80pio_device::pa3_w)); + m_centronics->busy_handler().set("pio", FUNC(z80pio_device::pa4_w)); + m_centronics->select_handler().set("pio", FUNC(z80pio_device::pa5_w)); - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) + INPUT_BUFFER(config, "cent_data_in"); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MCFG_UPD1990A_ADD("rtc", XTAL(32'768), NOOP, NOOP) diff --git a/src/mame/drivers/m3.cpp b/src/mame/drivers/m3.cpp index 97be6b798eb..39298c32320 100644 --- a/src/mame/drivers/m3.cpp +++ b/src/mame/drivers/m3.cpp @@ -1,5 +1,5 @@ // license:BSD-3-Clause -// copyright-holders: TODO +// copyright-holders: /*********************************************************************************************************************************** 2017-11-20 Skeleton diff --git a/src/mame/drivers/osborne1.cpp b/src/mame/drivers/osborne1.cpp index b3e93a3bed9..d54a7671899 100644 --- a/src/mame/drivers/osborne1.cpp +++ b/src/mame/drivers/osborne1.cpp @@ -298,37 +298,37 @@ MACHINE_CONFIG_START(osborne1_state::osborne1) MCFG_PALETTE_ADD_MONOCHROME_HIGHLIGHT("palette") SPEAKER(config, "mono").front_center(); - MCFG_DEVICE_ADD(m_speaker, SPEAKER_SOUND) - MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00) - - MCFG_DEVICE_ADD(m_pia0, PIA6821, 0) - MCFG_PIA_READPA_HANDLER(READ8(m_ieee, ieee488_device, dio_r)) - MCFG_PIA_READPB_HANDLER(READ8(*this, osborne1_state, ieee_pia_pb_r)) - MCFG_PIA_WRITEPA_HANDLER(WRITE8(m_ieee, ieee488_device, host_dio_w)) - MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, osborne1_state, ieee_pia_pb_w)) - MCFG_PIA_CA2_HANDLER(WRITELINE(m_ieee, ieee488_device, host_ifc_w)) - MCFG_PIA_CB2_HANDLER(WRITELINE(m_ieee, ieee488_device, host_ren_w)) - MCFG_PIA_IRQA_HANDLER(WRITELINE(*this, osborne1_state, ieee_pia_irq_a_func)) + SPEAKER_SOUND(config, m_speaker); + m_speaker->add_route(ALL_OUTPUTS, "mono", 1.00); + + PIA6821(config, m_pia0); + m_pia0->readpa_handler().set(m_ieee, FUNC(ieee488_device::dio_r)); + m_pia0->readpb_handler().set(FUNC(osborne1_state::ieee_pia_pb_r)); + m_pia0->writepa_handler().set(m_ieee, FUNC(ieee488_device::host_dio_w)); + m_pia0->writepb_handler().set(FUNC(osborne1_state::ieee_pia_pb_w)); + m_pia0->ca2_handler().set(m_ieee, FUNC(ieee488_device::host_ifc_w)); + m_pia0->cb2_handler().set(m_ieee, FUNC(ieee488_device::host_ren_w)); + m_pia0->irqa_handler().set(FUNC(osborne1_state::ieee_pia_irq_a_func)); MCFG_IEEE488_BUS_ADD() MCFG_IEEE488_SRQ_CALLBACK(WRITELINE(m_pia0, pia6821_device, ca2_w)) - MCFG_DEVICE_ADD(m_pia1, PIA6821, 0) - MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, osborne1_state, video_pia_port_a_w)) - MCFG_PIA_WRITEPB_HANDLER(WRITE8(*this, osborne1_state, video_pia_port_b_w)) - MCFG_PIA_CB2_HANDLER(WRITELINE(*this, osborne1_state, video_pia_out_cb2_dummy)) - MCFG_PIA_IRQA_HANDLER(WRITELINE(*this, osborne1_state, video_pia_irq_a_func)) - - MCFG_DEVICE_ADD(m_acia, ACIA6850, 0) - MCFG_ACIA6850_TXD_HANDLER(WRITELINE("rs232", rs232_port_device, write_txd)) - MCFG_ACIA6850_RTS_HANDLER(WRITELINE("rs232", rs232_port_device, write_rts)) - MCFG_ACIA6850_IRQ_HANDLER(WRITELINE(*this, osborne1_state, serial_acia_irq_func)) - - MCFG_DEVICE_ADD("rs232", RS232_PORT, default_rs232_devices, nullptr) - MCFG_RS232_RXD_HANDLER(WRITELINE(m_acia, acia6850_device, write_rxd)) - MCFG_RS232_DCD_HANDLER(WRITELINE(m_acia, acia6850_device, write_dcd)) - MCFG_RS232_CTS_HANDLER(WRITELINE(m_acia, acia6850_device, write_cts)) - MCFG_RS232_RI_HANDLER(WRITELINE(m_pia1, pia6821_device, ca2_w)) + PIA6821(config, m_pia1); + m_pia1->writepa_handler().set(FUNC(osborne1_state::video_pia_port_a_w)); + m_pia1->writepb_handler().set(FUNC(osborne1_state::video_pia_port_b_w)); + m_pia1->cb2_handler().set(FUNC(osborne1_state::video_pia_out_cb2_dummy)); + m_pia1->irqa_handler().set(FUNC(osborne1_state::video_pia_irq_a_func)); + + ACIA6850(config, m_acia); + m_acia->txd_handler().set("rs232", FUNC(rs232_port_device::write_txd)); + m_acia->rts_handler().set("rs232", FUNC(rs232_port_device::write_rts)); + m_acia->irq_handler().set(FUNC(osborne1_state::serial_acia_irq_func)); + + rs232_port_device &rs232(RS232_PORT(config, "rs232", default_rs232_devices, nullptr)); + rs232.rxd_handler().set(m_acia, FUNC(acia6850_device::write_rxd)); + rs232.dcd_handler().set(m_acia, FUNC(acia6850_device::write_dcd)); + rs232.cts_handler().set(m_acia, FUNC(acia6850_device::write_cts)); + rs232.ri_handler().set(m_pia1, FUNC(pia6821_device::ca2_w)); MCFG_DEVICE_ADD(m_fdc, MB8877, MAIN_CLOCK/16) MCFG_WD_FDC_FORCE_READY diff --git a/src/mame/drivers/thomson.cpp b/src/mame/drivers/thomson.cpp index b6ef72614c1..7c0e877203f 100644 --- a/src/mame/drivers/thomson.cpp +++ b/src/mame/drivers/thomson.cpp @@ -1485,6 +1485,7 @@ INPUT_PORTS_END MACHINE_CONFIG_START(thomson_state::to9) to7(config); + MCFG_MACHINE_START_OVERRIDE( thomson_state, to9 ) MCFG_MACHINE_RESET_OVERRIDE( thomson_state, to9 ) @@ -1502,8 +1503,8 @@ MACHINE_CONFIG_START(thomson_state::to9) MCFG_DEVICE_MODIFY("mc6846") MCFG_MC6846_OUT_PORT_CB(WRITE8(*this, thomson_state, to9_timer_port_out)) - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, thomson_state, write_centronics_busy)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy)); /* internal ram */ MCFG_RAM_MODIFY(RAM_TAG) @@ -1723,8 +1724,8 @@ MACHINE_CONFIG_START(thomson_state::to8) MCFG_PIA_CB2_HANDLER(NOOP) MCFG_PIA_IRQA_HANDLER(NOOP) - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, thomson_state, write_centronics_busy)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy)); MCFG_DEVICE_MODIFY("mc6846") MCFG_MC6846_OUT_PORT_CB(WRITE8(*this, thomson_state, to8_timer_port_out)) @@ -1890,8 +1891,8 @@ MACHINE_CONFIG_START(thomson_state::to9p) MCFG_PIA_IRQA_HANDLER(NOOP) MCFG_PIA_IRQB_HANDLER(WRITELINE("mainfirq", input_merger_device, in_w<1>)) - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, thomson_state, write_centronics_busy)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy)); MCFG_DEVICE_MODIFY("mc6846") MCFG_MC6846_OUT_PORT_CB(WRITE8(*this, thomson_state, to9p_timer_port_out)) @@ -2249,8 +2250,8 @@ MACHINE_CONFIG_START(thomson_state::mo6) MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, thomson_state, mo6_game_porta_out)) MCFG_PIA_CB2_HANDLER(WRITELINE(*this, thomson_state, mo6_game_cb2_out)) - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, thomson_state, write_centronics_busy)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy)); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") @@ -2518,11 +2519,11 @@ MACHINE_CONFIG_START(thomson_state::mo5nr) MCFG_DEVICE_MODIFY(THOM_PIA_GAME) MCFG_PIA_WRITEPA_HANDLER(WRITE8(*this, thomson_state, mo6_game_porta_out)) - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, thomson_state, write_centronics_busy)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->set_data_input_buffer("cent_data_in"); + m_centronics->busy_handler().set(FUNC(thomson_state::write_centronics_busy)); - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) + INPUT_BUFFER(config, "cent_data_in"); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", "centronics") MCFG_DEVICE_REMOVE("cartslot") diff --git a/src/mame/drivers/tiki100.cpp b/src/mame/drivers/tiki100.cpp index 35b4c661630..6d50e32e1f2 100644 --- a/src/mame/drivers/tiki100.cpp +++ b/src/mame/drivers/tiki100.cpp @@ -758,13 +758,13 @@ MACHINE_CONFIG_START(tiki100_state::tiki100) MCFG_DEVICE_ADD(RS232_B_TAG, RS232_PORT, default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(Z80DART_TAG, z80dart_device, rxb_w)) - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, tiki100_state, write_centronics_ack)) - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, tiki100_state, write_centronics_busy)) - MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, tiki100_state, write_centronics_perror)) + CENTRONICS(config, m_centronics, centronics_devices, "printer"); + m_centronics->set_data_input_buffer("cent_data_in"); + m_centronics->ack_handler().set(FUNC(tiki100_state::write_centronics_ack)); + m_centronics->busy_handler().set(FUNC(tiki100_state::write_centronics_busy)); + m_centronics->perror_handler().set(FUNC(tiki100_state::write_centronics_perror)); - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) + INPUT_BUFFER(config, "cent_data_in"); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) MCFG_CASSETTE_ADD(CASSETTE_TAG) diff --git a/src/mame/drivers/wangpc.cpp b/src/mame/drivers/wangpc.cpp index 5efff592a33..66c9626571d 100644 --- a/src/mame/drivers/wangpc.cpp +++ b/src/mame/drivers/wangpc.cpp @@ -1332,14 +1332,14 @@ MACHINE_CONFIG_START(wangpc_state::wangpc) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", wangpc_floppies, "525dd", wangpc_state::floppy_formats) MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", wangpc_floppies, "525dd", wangpc_state::floppy_formats) - MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer") - MCFG_CENTRONICS_DATA_INPUT_BUFFER("cent_data_in") - MCFG_CENTRONICS_ACK_HANDLER(WRITELINE(*this, wangpc_state, write_centronics_ack)) - MCFG_CENTRONICS_BUSY_HANDLER(WRITELINE(*this, wangpc_state, write_centronics_busy)) - MCFG_CENTRONICS_FAULT_HANDLER(WRITELINE(*this, wangpc_state, write_centronics_fault)) - MCFG_CENTRONICS_PERROR_HANDLER(WRITELINE(*this, wangpc_state, write_centronics_perror)) - - MCFG_DEVICE_ADD("cent_data_in", INPUT_BUFFER, 0) + MCFG_DEVICE_ADD(m_centronics, CENTRONICS, centronics_devices, "printer"); + m_centronics->set_data_input_buffer(m_cent_data_in); + m_centronics->ack_handler().set(FUNC(wangpc_state::write_centronics_ack)); + m_centronics->busy_handler().set(FUNC(wangpc_state::write_centronics_busy)); + m_centronics->fault_handler().set(FUNC(wangpc_state::write_centronics_fault)); + m_centronics->perror_handler().set(FUNC(wangpc_state::write_centronics_perror)); + + INPUT_BUFFER(config, m_cent_data_in); MCFG_CENTRONICS_OUTPUT_LATCH_ADD("cent_data_out", CENTRONICS_TAG) MCFG_DEVICE_ADD(RS232_TAG, RS232_PORT, default_rs232_devices, nullptr) diff --git a/src/mame/machine/lynx.cpp b/src/mame/machine/lynx.cpp index f038e7d3925..26b7c6793ef 100644 --- a/src/mame/machine/lynx.cpp +++ b/src/mame/machine/lynx.cpp @@ -1299,35 +1299,31 @@ DISPCTL EQU $FD92 ; set to $D by INITMIKEY void lynx_state::lynx_draw_line() { - const pen_t *pen = m_palette->pens(); - int x, y; + pen_t const *const pen = m_palette->pens(); uint16_t j; // clipping needed! - uint8_t byte; - uint16_t *line; - // calculate y: first three lines are vblank, - y = 101-m_timer[2].counter; + int const y = 101-m_timer[2].counter; // Documentation states lower two bits of buffer address are ignored (thus 0xfffc mask) j = (m_mikey.disp_addr & 0xfffc) + y * 160 / 2; if (m_mikey.data[0x92] & 0x02) { j -= 160 * 102 / 2 - 1; - line = &m_bitmap_temp.pix32(102 - 1 - y); - for (x = 160 - 2; x >= 0; j++, x -= 2) + uint32_t *const line = &m_bitmap_temp.pix32(102 - 1 - y); + for (int x = 160 - 2; x >= 0; j++, x -= 2) { - byte = lynx_read_ram(j); + uint8_t const byte = lynx_read_ram(j); line[x + 1] = pen[(byte >> 4) & 0x0f]; line[x + 0] = pen[(byte >> 0) & 0x0f]; } } else { - line = &m_bitmap_temp.pix32(y); - for (x = 0; x < 160; j++, x += 2) + uint32_t *const line = &m_bitmap_temp.pix32(y); + for (int x = 0; x < 160; j++, x += 2) { - byte = lynx_read_ram(j); + uint8_t const byte = lynx_read_ram(j); line[x + 0] = pen[(byte >> 4) & 0x0f]; line[x + 1] = pen[(byte >> 0) & 0x0f]; } -- cgit v1.2.3