From c5c3012634f76a15b30637cc687519cb5989667d Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Tue, 11 Jul 2017 02:31:42 +1000 Subject: Cleaned up serial, matrix keyboard and TI-8x link protocol interfaces: * Switched to delegate timers - Frees implementations from having to call timer method - Eliminates risk of ID conflicts with implementations/other interfaces * Moved save state registration to interface post start - Plays nicely with device_missing_dependencies exceptions - Frees implementation from having to call save state registration method - Improves save state support in devices that neglected to call method --- src/devices/bus/apricot/keyboard/hle.cpp | 11 --- src/devices/bus/apricot/keyboard/hle.h | 2 - src/devices/bus/hp_hil/hlekbd.cpp | 10 --- src/devices/bus/hp_hil/hlekbd.h | 4 - src/devices/bus/intellec4/intellec4.cpp | 117 ++++++++++++++++++++------ src/devices/bus/intellec4/intellec4.h | 25 +++++- src/devices/bus/isa/sblaster.cpp | 5 +- src/devices/bus/nes_ctrl/miracle.cpp | 4 - src/devices/bus/rs232/keyboard.cpp | 13 --- src/devices/bus/rs232/keyboard.h | 2 - src/devices/bus/rs232/null_modem.cpp | 2 +- src/devices/bus/rs232/printer.cpp | 5 -- src/devices/bus/rs232/printer.h | 1 - src/devices/bus/rs232/pty.cpp | 2 +- src/devices/bus/rs232/rs232.h | 3 - src/devices/bus/rs232/ser_mouse.cpp | 72 ++++++++-------- src/devices/bus/rs232/terminal.cpp | 12 --- src/devices/bus/rs232/terminal.h | 2 - src/devices/bus/rs232/xvd701.cpp | 2 +- src/devices/bus/snes_ctrl/miracle.cpp | 4 - src/devices/bus/sunkbd/hlekbd.cpp | 5 +- src/devices/bus/sunkbd/hlekbd.h | 2 - src/devices/bus/ti8x/graphlinkhle.cpp | 9 -- src/devices/bus/ti8x/graphlinkhle.h | 1 - src/devices/bus/ti8x/ti8x.cpp | 136 ++++++++++++++++--------------- src/devices/bus/ti8x/ti8x.h | 11 +-- src/devices/imagedev/midiin.cpp | 31 ++++--- src/devices/imagedev/midiout.cpp | 5 -- src/devices/imagedev/midiout.h | 1 - src/devices/machine/68561mpcc.cpp | 7 -- src/devices/machine/68561mpcc.h | 1 - src/devices/machine/i8251.cpp | 7 -- src/devices/machine/i8251.h | 1 - src/devices/machine/ie15.cpp | 2 - src/devices/machine/im6402.cpp | 10 --- src/devices/machine/im6402.h | 1 - src/devices/machine/ins8250.cpp | 10 +-- src/devices/machine/ins8250.h | 1 - src/devices/machine/keyboard.cpp | 6 -- src/devices/machine/keyboard.h | 11 +-- src/devices/machine/keyboard.ipp | 32 +++----- src/devices/machine/mc2661.cpp | 6 -- src/devices/machine/mc2661.h | 1 - src/devices/machine/mc6852.cpp | 10 --- src/devices/machine/mc6852.h | 1 - src/devices/machine/mc68681.cpp | 5 -- src/devices/machine/mc68681.h | 1 - src/devices/machine/mc68901.cpp | 2 - src/devices/machine/microtch.cpp | 77 +++++++++-------- src/devices/machine/scnxx562.cpp | 3 +- src/devices/machine/tms5501.cpp | 2 +- src/devices/machine/z80dart.cpp | 6 -- src/devices/machine/z80dart.h | 1 - src/devices/machine/z80scc.cpp | 6 -- src/devices/machine/z80sio.cpp | 6 -- src/devices/machine/z80sio.h | 1 - src/emu/diserial.cpp | 64 +++++++-------- src/emu/diserial.h | 25 +++--- src/emu/dislot.h | 2 +- src/mame/drivers/px4.cpp | 55 ++++++------- src/mame/drivers/seta2.cpp | 26 +++--- src/mame/includes/osborne1.h | 8 +- src/mame/machine/apollo_kbd.cpp | 5 -- src/mame/machine/apollo_kbd.h | 1 - src/mame/machine/dec_lk201.cpp | 4 +- src/mame/machine/esqpanel.cpp | 4 - src/mame/machine/gridkeyb.cpp | 6 -- src/mame/machine/gridkeyb.h | 1 - src/mame/machine/m20_kbd.cpp | 7 -- src/mame/machine/m20_kbd.h | 1 - src/mame/machine/midikbd.cpp | 6 +- src/mame/machine/octo_kbd.cpp | 6 -- src/mame/machine/octo_kbd.h | 1 - src/mame/machine/osborne1.cpp | 26 ++---- src/mame/machine/qx10kbd.cpp | 7 -- src/mame/machine/qx10kbd.h | 1 - src/mame/machine/rmnkbd.cpp | 7 -- src/mame/machine/rmnkbd.h | 1 - src/mame/machine/wangpckb.cpp | 10 --- src/mame/machine/wangpckb.h | 1 - src/mame/machine/x68k_kbd.cpp | 6 -- src/mame/machine/x68k_kbd.h | 1 - src/mame/machine/zx8302.cpp | 1 - src/mame/video/pcd.cpp | 5 -- src/mame/video/pcd.h | 1 - 85 files changed, 383 insertions(+), 622 deletions(-) diff --git a/src/devices/bus/apricot/keyboard/hle.cpp b/src/devices/bus/apricot/keyboard/hle.cpp index bb95d2bbc9d..742917b5c9d 100644 --- a/src/devices/bus/apricot/keyboard/hle.cpp +++ b/src/devices/bus/apricot/keyboard/hle.cpp @@ -224,7 +224,6 @@ apricot_keyboard_hle_device::apricot_keyboard_hle_device(const machine_config &m void apricot_keyboard_hle_device::device_start() { - device_buffered_serial_interface::register_save_state(machine().save(), this); } //------------------------------------------------- @@ -348,13 +347,3 @@ void apricot_keyboard_hle_device::out_w(int state) { device_buffered_serial_interface::rx_w(state); } - -//------------------------------------------------- -// device_timer - device-specific timer -//------------------------------------------------- - -void apricot_keyboard_hle_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); - device_buffered_serial_interface::device_timer(timer, id, param, ptr); -} diff --git a/src/devices/bus/apricot/keyboard/hle.h b/src/devices/bus/apricot/keyboard/hle.h index 921218a967f..6335a71ca73 100644 --- a/src/devices/bus/apricot/keyboard/hle.h +++ b/src/devices/bus/apricot/keyboard/hle.h @@ -49,8 +49,6 @@ protected: virtual void key_make(uint8_t row, uint8_t column) override; virtual void key_break(uint8_t row, uint8_t column) override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - private: enum { CMD_REQ_TIME_AND_DATE = 0xe1, diff --git a/src/devices/bus/hp_hil/hlekbd.cpp b/src/devices/bus/hp_hil/hlekbd.cpp index e068e9a0ec5..48289063ee7 100644 --- a/src/devices/bus/hp_hil/hlekbd.cpp +++ b/src/devices/bus/hp_hil/hlekbd.cpp @@ -277,16 +277,6 @@ void hle_device_base::device_reset() } -/*-------------------------------------------------- - hle_device_base::device_timer - handle timed events ---------------------------------------------------*/ - -void hle_device_base::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); -} - void hle_device_base::hil_write(uint16_t data) { int frames = 0; diff --git a/src/devices/bus/hp_hil/hlekbd.h b/src/devices/bus/hp_hil/hlekbd.h index 3c7f3fdda8c..534ba441c5e 100644 --- a/src/devices/bus/hp_hil/hlekbd.h +++ b/src/devices/bus/hp_hil/hlekbd.h @@ -26,7 +26,6 @@ protected: // device overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_matrix_keyboard_interface overrides virtual void key_make(uint8_t row, uint8_t column) override; @@ -36,9 +35,6 @@ protected: virtual void hil_write(uint16_t data) override; private: - // device_serial_interface uses 10'000 range - // device_matrix_keyboard_interface uses 20'000 range - void transmit_byte(uint8_t byte); util::fifo m_fifo; diff --git a/src/devices/bus/intellec4/intellec4.cpp b/src/devices/bus/intellec4/intellec4.cpp index 249e18ca501..83c2f7702c4 100644 --- a/src/devices/bus/intellec4/intellec4.cpp +++ b/src/devices/bus/intellec4/intellec4.cpp @@ -20,17 +20,40 @@ namespace bus { namespace intellec4 { univ_slot_device::univ_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) : device_t(mconfig, INTELLEC4_UNIV_SLOT, tag, owner, clock) , device_slot_interface(mconfig, *this) + , m_bus(*this, finder_base::DUMMY_TAG) { } +/*---------------------------------- + configuration helpers +----------------------------------*/ + void univ_slot_device::set_bus_tag(device_t &device, char const *tag) { + downcast(device).m_bus.set_tag(tag); } +/*---------------------------------- + device_t implementation +----------------------------------*/ + +void univ_slot_device::device_validity_check(validity_checker &valid) const +{ + device_t *const card(get_card_device()); + if (card && !dynamic_cast(card)) + osd_printf_error("Card device %s (%s) does not implement device_univ_card_interface\n", card->tag(), card->name()); +} + void univ_slot_device::device_start() { + device_t *const card_device(get_card_device()); + device_univ_card_interface *const univ_card(dynamic_cast(card_device)); + if (card_device && !univ_card) + throw emu_fatalerror("univ_slot_device: card device %s (%s) does not implement device_univ_card_interface\n", card_device->tag(), card_device->name()); + if (univ_card) + univ_card->set_bus(*m_bus); } @@ -39,6 +62,31 @@ void univ_slot_device::device_start() BUS DEVICE ***********************************************************************/ +univ_bus_device::univ_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) + : device_t(mconfig, INTELLEC4_UNIV_BUS, tag, owner, clock) + , m_rom_device(*this, finder_base::DUMMY_TAG) + , m_rom_ports_device(*this, finder_base::DUMMY_TAG) + , m_memory_device(*this, finder_base::DUMMY_TAG) + , m_status_device(*this, finder_base::DUMMY_TAG) + , m_ram_ports_device(*this, finder_base::DUMMY_TAG) + , m_rom_space(-1) + , m_rom_ports_space(-1) + , m_memory_space(-1) + , m_status_space(-1) + , m_ram_ports_space(-1) + , m_stop_out_cb(*this) + , m_test_out_cb(*this) + , m_reset_4002_out_cb(*this) + , m_user_reset_out_cb(*this) + , m_stop(0U) + , m_test(0U) + , m_reset_4002(0U) + , m_user_reset(0U) +{ + std::fill(std::begin(m_cards), std::end(m_cards), nullptr); +} + + /*---------------------------------- address space configuration ----------------------------------*/ @@ -79,31 +127,6 @@ void univ_bus_device::set_ram_ports_space(device_t &device, char const *tag, int } -univ_bus_device::univ_bus_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, INTELLEC4_UNIV_BUS, tag, owner, clock) - , m_rom_device(*this, finder_base::DUMMY_TAG) - , m_rom_ports_device(*this, finder_base::DUMMY_TAG) - , m_memory_device(*this, finder_base::DUMMY_TAG) - , m_status_device(*this, finder_base::DUMMY_TAG) - , m_ram_ports_device(*this, finder_base::DUMMY_TAG) - , m_rom_space(-1) - , m_rom_ports_space(-1) - , m_memory_space(-1) - , m_status_space(-1) - , m_ram_ports_space(-1) - , m_stop_out_cb(*this) - , m_test_out_cb(*this) - , m_reset_4002_out_cb(*this) - , m_user_reset_out_cb(*this) - , m_stop(0U) - , m_test(0U) - , m_reset_4002(0U) - , m_user_reset(0U) -{ - std::fill(std::begin(m_cards), std::end(m_cards), nullptr); -} - - /*---------------------------------- input lines ----------------------------------*/ @@ -177,6 +200,50 @@ void univ_bus_device::device_start() m_user_reset_out_cb.resolve_safe(); } + +/*---------------------------------- + helpers for cards +----------------------------------*/ + +unsigned univ_bus_device::add_card(device_univ_card_interface &card) +{ + for (unsigned i = 0; ARRAY_LENGTH(m_cards) > i; ++i) + { + if (!m_cards[i]) + { + m_cards[i] = &card; + return i; + } + } + throw emu_fatalerror("univ_bus_device: maximum number of cards (%u) exceeded\n", unsigned(ARRAY_LENGTH(m_cards))); +} + + + +/*********************************************************************** + CARD INTERFACE +***********************************************************************/ + +device_univ_card_interface::device_univ_card_interface(const machine_config &mconfig, device_t &device) + : device_slot_card_interface(mconfig, device) + , m_bus(nullptr) + , m_index(~unsigned(0)) +{ +} + + +void device_univ_card_interface::interface_pre_start() +{ + if (!m_bus) + throw device_missing_dependencies(); +} + + +void device_univ_card_interface::set_bus(univ_bus_device &bus) +{ + m_index = (m_bus = &bus)->add_card(*this); +} + } } // namespace bus::intellec4 diff --git a/src/devices/bus/intellec4/intellec4.h b/src/devices/bus/intellec4/intellec4.h index 2f5c418ec8d..58900760300 100644 --- a/src/devices/bus/intellec4/intellec4.h +++ b/src/devices/bus/intellec4/intellec4.h @@ -117,7 +117,7 @@ to implement the card in both systems. #define MCFG_INTELLEC4_UNIV_SLOT_ADD(bus_tag, slot_tag, clock, slot_intf, def_slot) \ MCFG_DEVICE_ADD(slot_tag, INTELLEC4_UNIV_SLOT, clock) \ MCFG_DEVICE_SLOT_INTERFACE(slot_intf, def_slot, false) \ - bus::intellec4::univ_slot_device::set_bus_tag(*device, bus_tag); + bus::intellec4::univ_slot_device::set_bus_tag(*device, "^" bus_tag); #define MCFG_INTELLEC4_UNIV_SLOT_REMOVE(slot_tag) \ MCFG_DEVICE_REMOVE(slot_tag) @@ -168,13 +168,19 @@ public: protected: // device_t implementation + virtual void device_validity_check(validity_checker &valid) const override ATTR_COLD; virtual void device_start() override; + +private: + required_device m_bus; }; class univ_bus_device : public device_t { public: + friend class device_univ_card_interface; + // address space configuration static void set_rom_space(device_t &device, char const *tag, int space); static void set_rom_ports_space(device_t &device, char const *tag, int space); @@ -214,6 +220,9 @@ protected: virtual void device_start() override; private: + // helpers for cards + unsigned add_card(device_univ_card_interface &card); + // finding address spaces required_device m_rom_device, m_rom_ports_device; required_device m_memory_device, m_status_device, m_ram_ports_device; @@ -236,6 +245,20 @@ private: class device_univ_card_interface : public device_slot_card_interface { +protected: + friend class univ_slot_device; + friend class univ_bus_device; + + device_univ_card_interface(const machine_config &mconfig, device_t &device); + + // device_interface implementation + void interface_pre_start() override; + +private: + void set_bus(univ_bus_device &bus); + + univ_bus_device *m_bus; + unsigned m_index; }; } } // namespace bus::intellec4 diff --git a/src/devices/bus/isa/sblaster.cpp b/src/devices/bus/isa/sblaster.cpp index 69e10819602..a6c0bcfa438 100644 --- a/src/devices/bus/isa/sblaster.cpp +++ b/src/devices/bus/isa/sblaster.cpp @@ -1568,13 +1568,10 @@ void sb_device::dack_w(int line, uint8_t data) void sb_device::device_timer(emu_timer &timer, device_timer_id tid, int param, void *ptr) { -// printf("DMA timer expire\n"); if (tid) - { - device_serial_interface::device_timer(timer, tid, param, ptr); return; - } +// printf("DMA timer expire\n"); uint16_t lsample, rsample; switch (m_dsp.flags) { case 0: // 8-bit unsigned mono diff --git a/src/devices/bus/nes_ctrl/miracle.cpp b/src/devices/bus/nes_ctrl/miracle.cpp index 14ea0c2572f..350286db17a 100644 --- a/src/devices/bus/nes_ctrl/miracle.cpp +++ b/src/devices/bus/nes_ctrl/miracle.cpp @@ -40,10 +40,6 @@ void nes_miracle_device::device_timer(emu_timer &timer, device_timer_id id, int { m_strobe_clock++; } - else - { - device_serial_interface::device_timer(timer, id, param, ptr); - } } //************************************************************************** diff --git a/src/devices/bus/rs232/keyboard.cpp b/src/devices/bus/rs232/keyboard.cpp index 17c6d4fa066..6e73ee30fc7 100644 --- a/src/devices/bus/rs232/keyboard.cpp +++ b/src/devices/bus/rs232/keyboard.cpp @@ -47,12 +47,6 @@ WRITE_LINE_MEMBER( serial_keyboard_device::update_serial ) reset(); } -void serial_keyboard_device::device_start() -{ - generic_keyboard_device::device_start(); - device_buffered_serial_interface::register_save_state(machine().save(), this); -} - void serial_keyboard_device::device_reset() { generic_keyboard_device::device_reset(); @@ -79,13 +73,6 @@ void serial_keyboard_device::device_reset() transmit_register_reset(); } -void serial_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - // give both bases a chance to handle it - device_buffered_serial_interface::device_timer(timer, id, param, ptr); - generic_keyboard_device::device_timer(timer, id, param, ptr); -} - void serial_keyboard_device::tra_callback() { output_rxd(transmit_register_get_data_bit()); diff --git a/src/devices/bus/rs232/keyboard.h b/src/devices/bus/rs232/keyboard.h index 33b848dc126..a10f9a78385 100644 --- a/src/devices/bus/rs232/keyboard.h +++ b/src/devices/bus/rs232/keyboard.h @@ -27,9 +27,7 @@ public: protected: serial_keyboard_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock); - virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void tra_callback() override; virtual void send_key(uint8_t code) override; diff --git a/src/devices/bus/rs232/null_modem.cpp b/src/devices/bus/rs232/null_modem.cpp index 27579f3d8b8..1f4ba8d5ae9 100644 --- a/src/devices/bus/rs232/null_modem.cpp +++ b/src/devices/bus/rs232/null_modem.cpp @@ -89,7 +89,7 @@ void null_modem_device::device_timer(emu_timer &timer, device_timer_id id, int p break; default: - device_serial_interface::device_timer(timer, id, param, ptr); + break; } } diff --git a/src/devices/bus/rs232/printer.cpp b/src/devices/bus/rs232/printer.cpp index 14df26f2203..82dc2530f5b 100644 --- a/src/devices/bus/rs232/printer.cpp +++ b/src/devices/bus/rs232/printer.cpp @@ -67,11 +67,6 @@ WRITE_LINE_MEMBER(serial_printer_device::printer_online) /// TODO: ? } -void serial_printer_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - void serial_printer_device::rcv_complete() { receive_register_extract(); diff --git a/src/devices/bus/rs232/printer.h b/src/devices/bus/rs232/printer.h index dba1c9401e2..099e3a33138 100644 --- a/src/devices/bus/rs232/printer.h +++ b/src/devices/bus/rs232/printer.h @@ -24,7 +24,6 @@ protected: virtual ioport_constructor device_input_ports() const override; virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void rcv_complete() override; diff --git a/src/devices/bus/rs232/pty.cpp b/src/devices/bus/rs232/pty.cpp index a324e532fb6..919b85b777b 100644 --- a/src/devices/bus/rs232/pty.cpp +++ b/src/devices/bus/rs232/pty.cpp @@ -90,7 +90,7 @@ void pseudo_terminal_device::device_timer(emu_timer &timer, device_timer_id id, break; default: - device_serial_interface::device_timer(timer, id, param, ptr); + break; } } diff --git a/src/devices/bus/rs232/rs232.h b/src/devices/bus/rs232/rs232.h index 395bf2b72cc..b062d35ff5b 100644 --- a/src/devices/bus/rs232/rs232.h +++ b/src/devices/bus/rs232/rs232.h @@ -276,15 +276,12 @@ protected: virtual void device_start() override { - device_buffered_serial_interface::register_save_state(machine().save(), this); } virtual void tra_callback() override { output_rxd(this->transmit_register_get_data_bit()); } - - using device_buffered_serial_interface::device_timer; }; DECLARE_DEVICE_TYPE(RS232_PORT, rs232_port_device) diff --git a/src/devices/bus/rs232/ser_mouse.cpp b/src/devices/bus/rs232/ser_mouse.cpp index d84f9a4d5f3..2c80fc43ef5 100644 --- a/src/devices/bus/rs232/ser_mouse.cpp +++ b/src/devices/bus/rs232/ser_mouse.cpp @@ -86,46 +86,42 @@ void serial_mouse_device::tra_callback() **************************************************************************/ void serial_mouse_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - if (id) + if (!id) { - device_serial_interface::device_timer(timer, id, param, ptr); - return; + static int ox = 0, oy = 0; + int nx,ny; + int dx, dy, nb; + int mbc; + + /* Do not get deltas or send packets if queue is not empty (Prevents drifting) */ + if (m_head==m_tail) + { + nx = m_x->read(); + + dx = nx - ox; + if (dx<=-0x800) dx = nx + 0x1000 - ox; /* Prevent jumping */ + if (dx>=0x800) dx = nx - 0x1000 - ox; + ox = nx; + + ny = m_y->read(); + + dy = ny - oy; + if (dy<=-0x800) dy = ny + 0x1000 - oy; + if (dy>=0x800) dy = ny - 0x1000 - oy; + oy = ny; + + nb = m_btn->read(); + mbc = nb^m_mb; + m_mb = nb; + + /* check if there is any delta or mouse buttons changed */ + if ( (dx!=0) || (dy!=0) || (mbc!=0) ) + mouse_trans(dx, dy, nb, mbc); + } + + if(m_tail != m_head && is_transmit_register_empty()) + transmit_register_setup(unqueue_data()); } - - static int ox = 0, oy = 0; - int nx,ny; - int dx, dy, nb; - int mbc; - - /* Do not get deltas or send packets if queue is not empty (Prevents drifting) */ - if (m_head==m_tail) - { - nx = m_x->read(); - - dx = nx - ox; - if (dx<=-0x800) dx = nx + 0x1000 - ox; /* Prevent jumping */ - if (dx>=0x800) dx = nx - 0x1000 - ox; - ox = nx; - - ny = m_y->read(); - - dy = ny - oy; - if (dy<=-0x800) dy = ny + 0x1000 - oy; - if (dy>=0x800) dy = ny - 0x1000 - oy; - oy = ny; - - nb = m_btn->read(); - mbc = nb^m_mb; - m_mb = nb; - - /* check if there is any delta or mouse buttons changed */ - if ( (dx!=0) || (dy!=0) || (mbc!=0) ) - mouse_trans(dx, dy, nb, mbc); - } - - - if(m_tail != m_head && is_transmit_register_empty()) - transmit_register_setup(unqueue_data()); } void microsoft_mouse_device::mouse_trans(int dx, int dy, int nb, int mbc) diff --git a/src/devices/bus/rs232/terminal.cpp b/src/devices/bus/rs232/terminal.cpp index 6d28eee7a0b..5a638a6c8db 100644 --- a/src/devices/bus/rs232/terminal.cpp +++ b/src/devices/bus/rs232/terminal.cpp @@ -32,12 +32,6 @@ ioport_constructor serial_terminal_device::device_input_ports() const return INPUT_PORTS_NAME(serial_terminal); } -void serial_terminal_device::device_start() -{ - generic_terminal_device::device_start(); - device_buffered_serial_interface::register_save_state(machine().save(), this); -} - WRITE_LINE_MEMBER(serial_terminal_device::update_serial) { clear_fifo(); @@ -72,12 +66,6 @@ void serial_terminal_device::device_reset() update_serial(0); } -void serial_terminal_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - generic_terminal_device::device_timer(timer, id, param, ptr); - device_buffered_serial_interface::device_timer(timer, id, param, ptr); -} - void serial_terminal_device::send_key(uint8_t code) { transmit_byte(code); diff --git a/src/devices/bus/rs232/terminal.h b/src/devices/bus/rs232/terminal.h index e58b882a96d..727b3122583 100644 --- a/src/devices/bus/rs232/terminal.h +++ b/src/devices/bus/rs232/terminal.h @@ -20,9 +20,7 @@ public: protected: virtual ioport_constructor device_input_ports() const override; - virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void tra_callback() override; virtual void send_key(uint8_t code) override; diff --git a/src/devices/bus/rs232/xvd701.cpp b/src/devices/bus/rs232/xvd701.cpp index 96c5ad4b01d..f9c7e0f7cbe 100644 --- a/src/devices/bus/rs232/xvd701.cpp +++ b/src/devices/bus/rs232/xvd701.cpp @@ -65,7 +65,7 @@ void jvc_xvd701_device::device_timer(emu_timer &timer, device_timer_id id, int p break; default: - device_serial_interface::device_timer(timer, id, param, ptr); + break; } } diff --git a/src/devices/bus/snes_ctrl/miracle.cpp b/src/devices/bus/snes_ctrl/miracle.cpp index f31eee7d848..1a4c7dc1423 100644 --- a/src/devices/bus/snes_ctrl/miracle.cpp +++ b/src/devices/bus/snes_ctrl/miracle.cpp @@ -41,10 +41,6 @@ void snes_miracle_device::device_timer(emu_timer &timer, device_timer_id id, int { m_strobe_clock++; } - else - { - device_serial_interface::device_timer(timer, id, param, ptr); - } } //************************************************************************** diff --git a/src/devices/bus/sunkbd/hlekbd.cpp b/src/devices/bus/sunkbd/hlekbd.cpp index 1820e3aa626..60abf1e0c4b 100644 --- a/src/devices/bus/sunkbd/hlekbd.cpp +++ b/src/devices/bus/sunkbd/hlekbd.cpp @@ -802,8 +802,6 @@ MACHINE_CONFIG_END void hle_device_base::device_start() { - device_buffered_serial_interface::register_save_state(machine().save(), this); - m_click_timer = timer_alloc(CLICK_TIMER_ID); save_item(NAME(m_make_count)); @@ -874,8 +872,7 @@ void hle_device_base::device_timer(emu_timer &timer, device_timer_id id, int par break; default: - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); - device_buffered_serial_interface::device_timer(timer, id, param, ptr); + break; } } diff --git a/src/devices/bus/sunkbd/hlekbd.h b/src/devices/bus/sunkbd/hlekbd.h index 7cb931b0fda..c2dbf17f67e 100644 --- a/src/devices/bus/sunkbd/hlekbd.h +++ b/src/devices/bus/sunkbd/hlekbd.h @@ -52,8 +52,6 @@ protected: required_ioport m_dips; private: - // device_serial_interface uses 10'000 range - // device_matrix_keyboard_interface uses 20'000 range enum { CLICK_TIMER_ID = 30'000 }; diff --git a/src/devices/bus/ti8x/graphlinkhle.cpp b/src/devices/bus/ti8x/graphlinkhle.cpp index 8a77ff826ff..40fff88b681 100644 --- a/src/devices/bus/ti8x/graphlinkhle.cpp +++ b/src/devices/bus/ti8x/graphlinkhle.cpp @@ -30,8 +30,6 @@ graph_link_hle_device::graph_link_hle_device( void graph_link_hle_device::device_start() { - device_serial_interface::register_save_state(machine().save(), this); - m_buffer = std::make_unique(BUFLEN); save_pointer(NAME(m_buffer.get()), BUFLEN); @@ -51,13 +49,6 @@ void graph_link_hle_device::device_reset() } -void graph_link_hle_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_ti8x_link_port_byte_interface::device_timer(timer, id, param, ptr); - device_serial_interface::device_timer(timer, id, param, ptr); -} - - MACHINE_CONFIG_MEMBER(graph_link_hle_device::device_add_mconfig) MCFG_RS232_PORT_ADD("rs232", default_rs232_devices, nullptr) MCFG_RS232_RXD_HANDLER(WRITELINE(graph_link_hle_device, rx_w)) diff --git a/src/devices/bus/ti8x/graphlinkhle.h b/src/devices/bus/ti8x/graphlinkhle.h index 5e574374cab..55f8a838cfe 100644 --- a/src/devices/bus/ti8x/graphlinkhle.h +++ b/src/devices/bus/ti8x/graphlinkhle.h @@ -37,7 +37,6 @@ protected: virtual void device_add_mconfig(machine_config &config) override; virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void byte_collision() override; virtual void byte_send_timeout() override; diff --git a/src/devices/bus/ti8x/ti8x.cpp b/src/devices/bus/ti8x/ti8x.cpp index 528b1dc6c39..e998ded593c 100644 --- a/src/devices/bus/ti8x/ti8x.cpp +++ b/src/devices/bus/ti8x/ti8x.cpp @@ -120,16 +120,23 @@ void device_ti8x_link_port_bit_interface::interface_pre_start() { device_ti8x_link_port_interface::interface_pre_start(); - m_error_timer = device().timer_alloc(TIMER_ID_BIT_TIMEOUT); + if (!m_error_timer) + m_error_timer = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_ti8x_link_port_bit_interface::bit_timeout), this)); + + m_bit_phase = IDLE; + m_tx_bit_buffer = EMPTY; + m_tip_in = m_ring_in = true; +} + + +void device_ti8x_link_port_bit_interface::interface_post_start() +{ + device_ti8x_link_port_interface::interface_post_start(); device().save_item(NAME(m_bit_phase)); device().save_item(NAME(m_tx_bit_buffer)); device().save_item(NAME(m_tip_in)); device().save_item(NAME(m_ring_in)); - - m_bit_phase = IDLE; - m_tx_bit_buffer = EMPTY; - m_tip_in = m_ring_in = true; } @@ -146,66 +153,6 @@ void device_ti8x_link_port_bit_interface::interface_pre_reset() } -void device_ti8x_link_port_bit_interface::device_timer( - emu_timer &timer, - device_timer_id id, - int param, void *ptr) -{ - switch (id) - { - case TIMER_ID_BIT_TIMEOUT: - switch (m_bit_phase) - { - // something very bad happened (heap smash?) - case IDLE: - case HOLD_0: - case HOLD_1: - default: - throw false; - - // receive timeout - case ACK_0: - case ACK_1: - LOGBITPROTO("timeout acknowledging %d bit\n", (ACK_0 == m_bit_phase) ? 0 : 1); - output_tip(1); - output_ring(1); - if (m_tip_in && m_ring_in) - { - check_tx_bit_buffer(); - } - else - { - LOGBITPROTO("waiting for bus idle\n"); - m_error_timer->reset((EMPTY == m_tx_bit_buffer) ? attotime::never : attotime(1, 0)); // TODO: configurable timeout - m_bit_phase = WAIT_IDLE; - } - bit_receive_timeout(); - break; - - // send timeout: - case WAIT_IDLE: - assert(EMPTY != m_tx_bit_buffer); - case WAIT_ACK_0: - case WAIT_ACK_1: - case WAIT_REL_0: - case WAIT_REL_1: - LOGBITPROTO("timeout sending bit\n"); - m_error_timer->reset(); - m_bit_phase = (m_tip_in && m_ring_in) ? IDLE : WAIT_IDLE; - m_tx_bit_buffer = EMPTY; - output_tip(1); - output_ring(1); - bit_send_timeout(); - break; - } - break; - - default: - break; - } -} - - void device_ti8x_link_port_bit_interface::send_bit(bool data) { LOGBITPROTO("queue %d bit\n", data ? 1 : 0); @@ -452,6 +399,55 @@ WRITE_LINE_MEMBER(device_ti8x_link_port_bit_interface::input_ring) } +TIMER_CALLBACK_MEMBER(device_ti8x_link_port_bit_interface::bit_timeout) +{ + switch (m_bit_phase) + { + // something very bad happened (heap smash?) + case IDLE: + case HOLD_0: + case HOLD_1: + default: + throw false; + + // receive timeout + case ACK_0: + case ACK_1: + LOGBITPROTO("timeout acknowledging %d bit\n", (ACK_0 == m_bit_phase) ? 0 : 1); + output_tip(1); + output_ring(1); + if (m_tip_in && m_ring_in) + { + check_tx_bit_buffer(); + } + else + { + LOGBITPROTO("waiting for bus idle\n"); + m_error_timer->reset((EMPTY == m_tx_bit_buffer) ? attotime::never : attotime(1, 0)); // TODO: configurable timeout + m_bit_phase = WAIT_IDLE; + } + bit_receive_timeout(); + break; + + // send timeout: + case WAIT_IDLE: + assert(EMPTY != m_tx_bit_buffer); + case WAIT_ACK_0: + case WAIT_ACK_1: + case WAIT_REL_0: + case WAIT_REL_1: + LOGBITPROTO("timeout sending bit\n"); + m_error_timer->reset(); + m_bit_phase = (m_tip_in && m_ring_in) ? IDLE : WAIT_IDLE; + m_tx_bit_buffer = EMPTY; + output_tip(1); + output_ring(1); + bit_send_timeout(); + break; + } +} + + void device_ti8x_link_port_bit_interface::check_tx_bit_buffer() { assert(m_tip_in); @@ -506,10 +502,16 @@ void device_ti8x_link_port_byte_interface::interface_pre_start() { device_ti8x_link_port_bit_interface::interface_pre_start(); + m_tx_byte_buffer = m_rx_byte_buffer = 0U; +} + + +void device_ti8x_link_port_byte_interface::interface_post_start() +{ + device_ti8x_link_port_bit_interface::interface_post_start(); + device().save_item(NAME(m_tx_byte_buffer)); device().save_item(NAME(m_rx_byte_buffer)); - - m_tx_byte_buffer = m_rx_byte_buffer = 0U; } diff --git a/src/devices/bus/ti8x/ti8x.h b/src/devices/bus/ti8x/ti8x.h index 5a21a4abc17..67ddad75747 100644 --- a/src/devices/bus/ti8x/ti8x.h +++ b/src/devices/bus/ti8x/ti8x.h @@ -125,19 +125,13 @@ protected: device_ti8x_link_port_bit_interface(machine_config const &mconfig, device_t &device); virtual void interface_pre_start() override; + virtual void interface_post_start() override; virtual void interface_pre_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); - void send_bit(bool data); void accept_bit(); private: - enum - { - TIMER_ID_BIT_TIMEOUT = 20000 // ensure this doesn't clash with device_serial_interface - }; - enum bit_phase { IDLE, @@ -168,6 +162,8 @@ private: virtual void bit_sent() = 0; virtual void bit_received(bool data) = 0; + TIMER_CALLBACK_MEMBER(bit_timeout); + void check_tx_bit_buffer(); emu_timer * m_error_timer; @@ -183,6 +179,7 @@ protected: device_ti8x_link_port_byte_interface(machine_config const &mconfig, device_t &device); virtual void interface_pre_start() override; + virtual void interface_post_start() override; virtual void interface_pre_reset() override; void send_byte(u8 data); diff --git a/src/devices/imagedev/midiin.cpp b/src/devices/imagedev/midiin.cpp index e9301c76504..6086cb48a3e 100644 --- a/src/devices/imagedev/midiin.cpp +++ b/src/devices/imagedev/midiin.cpp @@ -64,27 +64,24 @@ void midiin_device::device_reset() void midiin_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - if (id) { - device_serial_interface::device_timer(timer, id, param, ptr); - return; - } - - uint8_t buf[8192*4]; - int bytesRead; - - if (m_midi == nullptr) { - return; - } + if (!id) { + uint8_t buf[8192*4]; + int bytesRead; - while (m_midi->poll()) - { - bytesRead = m_midi->read(buf); + if (m_midi == nullptr) { + return; + } - if (bytesRead > 0) + while (m_midi->poll()) { - for (int i = 0; i < bytesRead; i++) + bytesRead = m_midi->read(buf); + + if (bytesRead > 0) { - xmit_char(buf[i]); + for (int i = 0; i < bytesRead; i++) + { + xmit_char(buf[i]); + } } } } diff --git a/src/devices/imagedev/midiout.cpp b/src/devices/imagedev/midiout.cpp index 6b05020e77b..3c0613e2015 100644 --- a/src/devices/imagedev/midiout.cpp +++ b/src/devices/imagedev/midiout.cpp @@ -47,11 +47,6 @@ void midiout_device::device_reset() set_tra_rate(0); } -void midiout_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - /*------------------------------------------------- call_load -------------------------------------------------*/ diff --git a/src/devices/imagedev/midiout.h b/src/devices/imagedev/midiout.h index 8fa29f9d7a7..0bd1c0c38af 100644 --- a/src/devices/imagedev/midiout.h +++ b/src/devices/imagedev/midiout.h @@ -53,7 +53,6 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // serial overrides virtual void rcv_complete() override; // Rx completed receiving byte diff --git a/src/devices/machine/68561mpcc.cpp b/src/devices/machine/68561mpcc.cpp index 548c648479a..6c262a6f8c0 100644 --- a/src/devices/machine/68561mpcc.cpp +++ b/src/devices/machine/68561mpcc.cpp @@ -205,8 +205,6 @@ void mpcc_device::device_start() save_item(NAME(m_ccr)); save_item(NAME(m_ecr)); LOG(" - MPCC variant %02x\n", m_variant); - - device_serial_interface::register_save_state(machine().save(), this); } //------------------------------------------------- @@ -259,11 +257,6 @@ void mpcc_device::device_reset() /* * Serial device implementation */ -void mpcc_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - WRITE_LINE_MEMBER(mpcc_device::cts_w) { if (state == CLEAR_LINE) diff --git a/src/devices/machine/68561mpcc.h b/src/devices/machine/68561mpcc.h index 031d60bdef4..50efa5dd39e 100644 --- a/src/devices/machine/68561mpcc.h +++ b/src/devices/machine/68561mpcc.h @@ -130,7 +130,6 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_serial_interface overrides virtual void tra_callback() override; diff --git a/src/devices/machine/i8251.cpp b/src/devices/machine/i8251.cpp index 38ebcd7122e..b1359309f0c 100644 --- a/src/devices/machine/i8251.cpp +++ b/src/devices/machine/i8251.cpp @@ -97,7 +97,6 @@ void i8251_device::device_start() save_item(NAME(m_br_factor)); save_item(NAME(m_rx_data)); save_item(NAME(m_tx_data)); - device_serial_interface::register_save_state(machine().save(), this); } @@ -678,12 +677,6 @@ READ8_MEMBER(i8251_device::data_r) } -void i8251_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - - WRITE_LINE_MEMBER(i8251_device::write_rxd) { m_rxd = state; diff --git a/src/devices/machine/i8251.h b/src/devices/machine/i8251.h index 896cf99833e..d3df46df789 100644 --- a/src/devices/machine/i8251.h +++ b/src/devices/machine/i8251.h @@ -91,7 +91,6 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; void command_w(uint8_t data); void mode_w(uint8_t data); diff --git a/src/devices/machine/ie15.cpp b/src/devices/machine/ie15.cpp index 2bcb87e66e3..28977011efb 100644 --- a/src/devices/machine/ie15.cpp +++ b/src/devices/machine/ie15.cpp @@ -208,8 +208,6 @@ READ8_MEMBER(ie15_device::kb_s_lin_r) void ie15_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - device_serial_interface::device_timer(timer, id, param, ptr); - switch (id) { case TIMER_HBLANK: diff --git a/src/devices/machine/im6402.cpp b/src/devices/machine/im6402.cpp index ea76e9d0f21..de7753bac94 100644 --- a/src/devices/machine/im6402.cpp +++ b/src/devices/machine/im6402.cpp @@ -151,16 +151,6 @@ void im6402_device::device_reset() } -//------------------------------------------------- -// device_timer - handler timer events -//------------------------------------------------- - -void im6402_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - - //------------------------------------------------- // tra_callback - //------------------------------------------------- diff --git a/src/devices/machine/im6402.h b/src/devices/machine/im6402.h index 2edf9cbcdfd..1dd485a6eec 100644 --- a/src/devices/machine/im6402.h +++ b/src/devices/machine/im6402.h @@ -114,7 +114,6 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_serial_interface overrides virtual void tra_callback() override; diff --git a/src/devices/machine/ins8250.cpp b/src/devices/machine/ins8250.cpp index 8ec7a17a12b..e70e771e7c5 100644 --- a/src/devices/machine/ins8250.cpp +++ b/src/devices/machine/ins8250.cpp @@ -560,7 +560,6 @@ void ins8250_uart_device::device_start() set_tra_rate(0); set_rcv_rate(0); - device_serial_interface::register_save_state(machine().save(), this); save_item(NAME(m_regs.thr)); save_item(NAME(m_regs.rbr)); save_item(NAME(m_regs.ier)); @@ -602,11 +601,6 @@ void ins8250_uart_device::device_reset() m_out_out2_cb(1); } -void ins8250_uart_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - void ns16550_device::device_start() { m_timeout = timer_alloc(); @@ -633,9 +627,7 @@ void ns16550_device::device_reset() void ns16550_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - if(id) - device_serial_interface::device_timer(timer, id, param, ptr); - else + if(!id) { trigger_int(COM_INT_PENDING_CHAR_TIMEOUT); m_timeout->adjust(attotime::never); diff --git a/src/devices/machine/ins8250.h b/src/devices/machine/ins8250.h index f10293a75f4..d9ab726cf18 100644 --- a/src/devices/machine/ins8250.h +++ b/src/devices/machine/ins8250.h @@ -51,7 +51,6 @@ protected: virtual void rcv_complete() override; virtual void tra_complete() override; virtual void tra_callback() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void set_fcr(uint8_t data) { } virtual void push_tx(uint8_t data) { } diff --git a/src/devices/machine/keyboard.cpp b/src/devices/machine/keyboard.cpp index ebd199560e3..7fa6e0f5a95 100644 --- a/src/devices/machine/keyboard.cpp +++ b/src/devices/machine/keyboard.cpp @@ -288,12 +288,6 @@ void generic_keyboard_device::device_reset() } -void generic_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); -} - - void generic_keyboard_device::key_make(u8 row, u8 column) { send_translated((row << 4) | column); diff --git a/src/devices/machine/keyboard.h b/src/devices/machine/keyboard.h index eab27c13edb..a2ebd3e8672 100644 --- a/src/devices/machine/keyboard.h +++ b/src/devices/machine/keyboard.h @@ -47,7 +47,6 @@ protected: virtual void interface_pre_start() override; virtual void interface_post_start() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); void start_processing(const attotime &period); void stop_processing(); @@ -66,13 +65,8 @@ protected: bool are_all_keys_up(); private: - // device_serial_interface uses 10'000 range - enum { - TIMER_ID_SCAN = 20'000, - TIMER_ID_TYPEMATIC - }; - - void scan_row(); + TIMER_CALLBACK_MEMBER(scan_row); + TIMER_CALLBACK_MEMBER(typematic); emu_timer *m_scan_timer; emu_timer *m_typematic_timer; @@ -109,7 +103,6 @@ protected: u32 clock); virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void key_make(u8 row, u8 column) override; virtual void key_repeat(u8 row, u8 column) override; virtual void send_key(u8 code); diff --git a/src/devices/machine/keyboard.ipp b/src/devices/machine/keyboard.ipp index eda221d946e..b72ed00de15 100644 --- a/src/devices/machine/keyboard.ipp +++ b/src/devices/machine/keyboard.ipp @@ -33,8 +33,10 @@ device_matrix_keyboard_interface::device_matrix_keyboard_interface(ma template void device_matrix_keyboard_interface::interface_pre_start() { - m_scan_timer = device().timer_alloc(TIMER_ID_SCAN); - m_typematic_timer = device().timer_alloc(TIMER_ID_TYPEMATIC); + if (!m_scan_timer) + m_scan_timer = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_matrix_keyboard_interface::scan_row), this)); + if (!m_typematic_timer) + m_typematic_timer = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_matrix_keyboard_interface::typematic), this)); reset_key_state(); typematic_stop(); } @@ -51,22 +53,6 @@ void device_matrix_keyboard_interface::interface_post_start() } -template -void device_matrix_keyboard_interface::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - switch (id) - { - case TIMER_ID_SCAN: - scan_row(); - break; - case TIMER_ID_TYPEMATIC: - assert((m_typematic_row != uint8_t(~0U)) || (m_typematic_column != uint8_t(~0U))); - key_repeat(m_typematic_row, m_typematic_column); - break; - } -} - - template void device_matrix_keyboard_interface::start_processing(const attotime &period) { @@ -118,7 +104,7 @@ void device_matrix_keyboard_interface::typematic_stop() template -void device_matrix_keyboard_interface::scan_row() +TIMER_CALLBACK_MEMBER(device_matrix_keyboard_interface::scan_row) { assert(m_next_row < ARRAY_LENGTH(m_key_rows)); assert(m_next_row < ARRAY_LENGTH(m_key_states)); @@ -146,6 +132,14 @@ void device_matrix_keyboard_interface::scan_row() } +template +TIMER_CALLBACK_MEMBER(device_matrix_keyboard_interface::typematic) +{ + assert((m_typematic_row != uint8_t(~0U)) || (m_typematic_column != uint8_t(~0U))); + key_repeat(m_typematic_row, m_typematic_column); +} + + template void device_matrix_keyboard_interface::key_repeat(uint8_t row, uint8_t column) { diff --git a/src/devices/machine/mc2661.cpp b/src/devices/machine/mc2661.cpp index fa750d47e77..ff72e9d1844 100644 --- a/src/devices/machine/mc2661.cpp +++ b/src/devices/machine/mc2661.cpp @@ -492,9 +492,3 @@ READ_LINE_MEMBER( mc2661_device::txemt_r ) { return (m_sr & STATUS_TXEMT) ? ASSERT_LINE : CLEAR_LINE; } - - -void mc2661_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} diff --git a/src/devices/machine/mc2661.h b/src/devices/machine/mc2661.h index 96baf6f822f..3c798b62c8d 100644 --- a/src/devices/machine/mc2661.h +++ b/src/devices/machine/mc2661.h @@ -108,7 +108,6 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_serial_interface overrides virtual void tra_callback() override; diff --git a/src/devices/machine/mc6852.cpp b/src/devices/machine/mc6852.cpp index 986c6129a26..d2021a450a2 100644 --- a/src/devices/machine/mc6852.cpp +++ b/src/devices/machine/mc6852.cpp @@ -113,16 +113,6 @@ void mc6852_device::device_reset() } -//------------------------------------------------- -// device_timer - handler timer events -//------------------------------------------------- - -void mc6852_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - - //------------------------------------------------- // tra_callback - //------------------------------------------------- diff --git a/src/devices/machine/mc6852.h b/src/devices/machine/mc6852.h index 8f9b7da370a..464ed55102a 100644 --- a/src/devices/machine/mc6852.h +++ b/src/devices/machine/mc6852.h @@ -90,7 +90,6 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int m_param, void *ptr) override; // device_serial_interface overrides virtual void tra_callback() override; diff --git a/src/devices/machine/mc68681.cpp b/src/devices/machine/mc68681.cpp index c000feadd15..956dbe2071b 100644 --- a/src/devices/machine/mc68681.cpp +++ b/src/devices/machine/mc68681.cpp @@ -805,11 +805,6 @@ void mc68681_channel::device_reset() CSR = 0; } -void mc68681_channel::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - // serial device virtual overrides void mc68681_channel::rcv_complete() { diff --git a/src/devices/machine/mc68681.h b/src/devices/machine/mc68681.h index f296866080b..d1f9d3c96d6 100644 --- a/src/devices/machine/mc68681.h +++ b/src/devices/machine/mc68681.h @@ -55,7 +55,6 @@ public: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_serial overrides virtual void rcv_complete() override; // Rx completed receiving byte diff --git a/src/devices/machine/mc68901.cpp b/src/devices/machine/mc68901.cpp index d790b4c3020..bf51e8820a3 100644 --- a/src/devices/machine/mc68901.cpp +++ b/src/devices/machine/mc68901.cpp @@ -472,8 +472,6 @@ void mc68901_device::device_timer(emu_timer &timer, device_timer_id id, int para { if(id >= TIMER_A && id <= TIMER_D) timer_count(id); - else - device_serial_interface::device_timer(timer, id, param, ptr); } diff --git a/src/devices/machine/microtch.cpp b/src/devices/machine/microtch.cpp index a712b2c7125..0cb51054aab 100644 --- a/src/devices/machine/microtch.cpp +++ b/src/devices/machine/microtch.cpp @@ -118,55 +118,52 @@ void microtouch_device::send_touch_packet() void microtouch_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - if(id) + if (!id) { - device_serial_interface::device_timer(timer, id, param, ptr); - return; - } - - if ( m_tx_buffer_ptr < m_tx_buffer_num ) - { - if(is_transmit_register_empty()) + if ( m_tx_buffer_ptr < m_tx_buffer_num ) { - m_output = m_tx_buffer[m_tx_buffer_ptr++]; - m_output_valid = true; - tra_complete(); + if(is_transmit_register_empty()) + { + m_output = m_tx_buffer[m_tx_buffer_ptr++]; + m_output_valid = true; + tra_complete(); + } + + if ( m_tx_buffer_ptr == m_tx_buffer_num ) + { + m_tx_buffer_ptr = m_tx_buffer_num = 0; + } + return; } - if ( m_tx_buffer_ptr == m_tx_buffer_num ) + if ( (m_reset_done == 0) || + (m_format == FORMAT_UNKNOWN) || + (m_mode != MODE_STREAM)) { - m_tx_buffer_ptr = m_tx_buffer_num = 0; + return; } - return; - } - - if ( (m_reset_done == 0) || - (m_format == FORMAT_UNKNOWN) || - (m_mode != MODE_STREAM)) - { - return; - } - // send format tablet packet - if (m_touch->read()) - { - send_touch_packet(); - } - else - { - if ( m_last_touch_state == 1 ) + // send format tablet packet + if (m_touch->read()) + { + send_touch_packet(); + } + else { - m_last_touch_state = 0; - switch( m_format ) + if ( m_last_touch_state == 1 ) { - case FORMAT_TABLET: - send_format_table_packet(0x88, m_last_x, m_last_y); - break; - case FORMAT_DECIMAL: - send_format_decimal_packet(m_last_x, m_last_y); - break; - case FORMAT_UNKNOWN: - break; + m_last_touch_state = 0; + switch( m_format ) + { + case FORMAT_TABLET: + send_format_table_packet(0x88, m_last_x, m_last_y); + break; + case FORMAT_DECIMAL: + send_format_decimal_packet(m_last_x, m_last_y); + break; + case FORMAT_UNKNOWN: + break; + } } } } diff --git a/src/devices/machine/scnxx562.cpp b/src/devices/machine/scnxx562.cpp index ebb263f2096..fad7a9963c7 100644 --- a/src/devices/machine/scnxx562.cpp +++ b/src/devices/machine/scnxx562.cpp @@ -808,8 +808,7 @@ void duscc_channel::device_timer(emu_timer &timer, device_timer_id id, int param m_uart->m_out_trxcb_cb(m_trxc); break; default: - LOGR("Unhandled Timer ID passed to device_serial_interface%d\n", id); - device_serial_interface::device_timer(timer, id, param, ptr); + LOGR("Unhandled Timer ID %d\n", id); break; } // LOG("%s %d\n", FUNCNAME, id); diff --git a/src/devices/machine/tms5501.cpp b/src/devices/machine/tms5501.cpp index d5c75012e7c..6b287ccc60c 100644 --- a/src/devices/machine/tms5501.cpp +++ b/src/devices/machine/tms5501.cpp @@ -152,7 +152,7 @@ void tms5501_device::device_timer(emu_timer &timer, device_timer_id id, int para break; default: - device_serial_interface::device_timer(timer, id, param, ptr); + break; } } diff --git a/src/devices/machine/z80dart.cpp b/src/devices/machine/z80dart.cpp index 9279cbaf280..8977c46032e 100644 --- a/src/devices/machine/z80dart.cpp +++ b/src/devices/machine/z80dart.cpp @@ -513,7 +513,6 @@ void z80dart_channel::device_start() save_item(NAME(m_dtr)); save_item(NAME(m_rts)); save_item(NAME(m_sync)); - device_serial_interface::register_save_state(machine().save(), this); } @@ -545,11 +544,6 @@ void z80dart_channel::device_reset() } } -void z80dart_channel::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - //------------------------------------------------- // tra_callback - diff --git a/src/devices/machine/z80dart.h b/src/devices/machine/z80dart.h index b5235d4af82..9496c0d1398 100644 --- a/src/devices/machine/z80dart.h +++ b/src/devices/machine/z80dart.h @@ -289,7 +289,6 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_serial_interface overrides virtual void tra_callback() override; diff --git a/src/devices/machine/z80scc.cpp b/src/devices/machine/z80scc.cpp index d0e1681c9de..805018d00f2 100644 --- a/src/devices/machine/z80scc.cpp +++ b/src/devices/machine/z80scc.cpp @@ -969,8 +969,6 @@ void z80scc_channel::device_start() save_item(NAME(m_rts)); save_item(NAME(m_tx_int_disarm)); save_item(NAME(m_sync_pattern)); - - device_serial_interface::register_save_state(machine().save(), this); } @@ -1050,10 +1048,6 @@ void z80scc_channel::device_timer(emu_timer &timer, device_timer_id id, int para default: logerror("Spurious timer %d event\n", id); } -#else - // TODO: Hmmm, either the above default clause is called OR the bellow call is not needed since we handled our local event anyway...?! - // and the above default is not called unless we implement the BRG timer using diserial timer interfaces... - device_serial_interface::device_timer(timer, id, param, ptr); #endif } diff --git a/src/devices/machine/z80sio.cpp b/src/devices/machine/z80sio.cpp index 6e7cbeef010..5538f8b7a5a 100644 --- a/src/devices/machine/z80sio.cpp +++ b/src/devices/machine/z80sio.cpp @@ -569,7 +569,6 @@ void z80sio_channel::device_start() save_item(NAME(m_rts)); save_item(NAME(m_sync)); save_item(NAME(m_variant)); - device_serial_interface::register_save_state(machine().save(), this); } @@ -603,11 +602,6 @@ void z80sio_channel::device_reset() } } -void z80sio_channel::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - //------------------------------------------------- // tra_callback - //------------------------------------------------- diff --git a/src/devices/machine/z80sio.h b/src/devices/machine/z80sio.h index 5254cd34ee5..97dc91e65a0 100644 --- a/src/devices/machine/z80sio.h +++ b/src/devices/machine/z80sio.h @@ -152,7 +152,6 @@ public: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // device_serial_interface overrides virtual void tra_callback() override; diff --git a/src/emu/diserial.cpp b/src/emu/diserial.cpp index 76209dfb35a..b0a8e40ab6a 100644 --- a/src/emu/diserial.cpp +++ b/src/emu/diserial.cpp @@ -56,40 +56,40 @@ device_serial_interface::~device_serial_interface() { } -void device_serial_interface::register_save_state(save_manager &save, device_t *device) -{ - const char *module = device->name(); - const char *tag = device->tag(); - save.save_item(device, module, tag, 0, NAME(m_df_start_bit_count)); - save.save_item(device, module, tag, 0, NAME(m_df_word_length)); - save.save_item(device, module, tag, 0, NAME(m_df_parity)); - save.save_item(device, module, tag, 0, NAME(m_df_stop_bit_count)); - save.save_item(device, module, tag, 0, NAME(m_rcv_register_data)); - save.save_item(device, module, tag, 0, NAME(m_rcv_flags)); - save.save_item(device, module, tag, 0, NAME(m_rcv_bit_count_received)); - save.save_item(device, module, tag, 0, NAME(m_rcv_bit_count)); - save.save_item(device, module, tag, 0, NAME(m_rcv_byte_received)); - save.save_item(device, module, tag, 0, NAME(m_rcv_framing_error)); - save.save_item(device, module, tag, 0, NAME(m_rcv_parity_error)); - save.save_item(device, module, tag, 0, NAME(m_tra_register_data)); - save.save_item(device, module, tag, 0, NAME(m_tra_flags)); - save.save_item(device, module, tag, 0, NAME(m_tra_bit_count_transmitted)); - save.save_item(device, module, tag, 0, NAME(m_tra_bit_count)); - save.save_item(device, module, tag, 0, NAME(m_rcv_rate)); - save.save_item(device, module, tag, 0, NAME(m_tra_rate)); - save.save_item(device, module, tag, 0, NAME(m_rcv_line)); - save.save_item(device, module, tag, 0, NAME(m_tra_clock_state)); - save.save_item(device, module, tag, 0, NAME(m_rcv_clock_state)); -} - void device_serial_interface::interface_pre_start() { - m_rcv_clock = device().timer_alloc(RCV_TIMER_ID); - m_tra_clock = device().timer_alloc(TRA_TIMER_ID); + if (!m_rcv_clock) + m_rcv_clock = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_serial_interface::rcv_clock), this)); + if (!m_tra_clock) + m_tra_clock = device().machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(device_serial_interface::tra_clock), this)); m_rcv_clock_state = false; m_tra_clock_state = false; } +void device_serial_interface::interface_post_start() +{ + device().save_item(NAME(m_df_start_bit_count)); + device().save_item(NAME(m_df_word_length)); + device().save_item(NAME(m_df_parity)); + device().save_item(NAME(m_df_stop_bit_count)); + device().save_item(NAME(m_rcv_register_data)); + device().save_item(NAME(m_rcv_flags)); + device().save_item(NAME(m_rcv_bit_count_received)); + device().save_item(NAME(m_rcv_bit_count)); + device().save_item(NAME(m_rcv_byte_received)); + device().save_item(NAME(m_rcv_framing_error)); + device().save_item(NAME(m_rcv_parity_error)); + device().save_item(NAME(m_tra_register_data)); + device().save_item(NAME(m_tra_flags)); + device().save_item(NAME(m_tra_bit_count_transmitted)); + device().save_item(NAME(m_tra_bit_count)); + device().save_item(NAME(m_rcv_rate)); + device().save_item(NAME(m_tra_rate)); + device().save_item(NAME(m_rcv_line)); + device().save_item(NAME(m_tra_clock_state)); + device().save_item(NAME(m_rcv_clock_state)); +} + void device_serial_interface::set_rcv_rate(const attotime &rate) { m_rcv_rate = rate/2; @@ -153,14 +153,6 @@ WRITE_LINE_MEMBER(device_serial_interface::clock_w) rx_clock_w(state); } -void device_serial_interface::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - switch(id) { - case TRA_TIMER_ID: tx_clock_w(!m_tra_clock_state); break; - case RCV_TIMER_ID: rx_clock_w(!m_rcv_clock_state); break; - } -} - void device_serial_interface::set_data_frame(int start_bit_count, int data_bit_count, parity_t parity, stop_bits_t stop_bits) { diff --git a/src/emu/diserial.h b/src/emu/diserial.h index 413692147e7..553385f76f3 100644 --- a/src/emu/diserial.h +++ b/src/emu/diserial.h @@ -123,19 +123,16 @@ protected: // interface-level overrides virtual void interface_pre_start() override; - - // Must be called from device_timer in the underlying device - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); + virtual void interface_post_start() override; bool m_start_bit_hack_for_external_clocks; const char *parity_tostring(parity_t stop_bits); const char *stop_bits_tostring(stop_bits_t stop_bits); - void register_save_state(save_manager &save, device_t *device); - private: - enum { TRA_TIMER_ID = 10000, RCV_TIMER_ID }; + TIMER_CALLBACK_MEMBER(rcv_clock) { rx_clock_w(!m_rcv_clock_state); } + TIMER_CALLBACK_MEMBER(tra_clock) { tx_clock_w(!m_tra_clock_state); } u8 m_serial_parity_table[256]; @@ -246,17 +243,15 @@ protected: return !m_empty && (m_head == m_tail); } - void register_save_state(save_manager &save, device_t *device) +protected: + void interface_post_start() override { - device_serial_interface::register_save_state(save, device); - - char const *const module(device->name()); - char const *const tag(device->tag()); + device_serial_interface::interface_post_start(); - save.save_item(device, module, tag, 0, NAME(m_fifo)); - save.save_item(device, module, tag, 0, NAME(m_head)); - save.save_item(device, module, tag, 0, NAME(m_tail)); - save.save_item(device, module, tag, 0, NAME(m_empty)); + device().save_item(NAME(m_fifo)); + device().save_item(NAME(m_head)); + device().save_item(NAME(m_tail)); + device().save_item(NAME(m_empty)); } private: diff --git a/src/emu/dislot.h b/src/emu/dislot.h index 2832989e3eb..4cc0448732c 100644 --- a/src/emu/dislot.h +++ b/src/emu/dislot.h @@ -143,7 +143,7 @@ public: const std::unordered_map> &option_list() const { return m_options; } device_slot_option *option(const char *name) const; virtual std::string get_default_card_software(get_default_card_software_hook &hook) const { return std::string(); } - device_t *get_card_device() { return m_card_device; } + device_t *get_card_device() const { return m_card_device; } void set_card_device(device_t *dev) { m_card_device = dev; } const char *slot_name() const { return device().tag() + 1; } diff --git a/src/mame/drivers/px4.cpp b/src/mame/drivers/px4.cpp index b443ebf74d2..6476486f0fa 100644 --- a/src/mame/drivers/px4.cpp +++ b/src/mame/drivers/px4.cpp @@ -56,30 +56,30 @@ class px4_state : public driver_device, public device_serial_interface { public: px4_state(const machine_config &mconfig, device_type type, const char *tag) : - driver_device(mconfig, type, tag), - device_serial_interface(mconfig, *this), - m_z80(*this, "maincpu"), - m_ram(*this, RAM_TAG), - m_nvram(*this, "nvram"), - m_centronics(*this, "centronics"), - m_ext_cas(*this, "extcas"), - m_ext_cas_timer(*this, "extcas_timer"), - m_speaker(*this, "speaker"), - m_sio(*this, "sio"), - m_rs232(*this, "rs232"), - m_caps1(*this, "capsule1"), m_caps2(*this, "capsule2"), - m_caps1_rom(nullptr), m_caps2_rom(nullptr), - m_ctrl1(0), m_icrb(0), m_bankr(0), - m_isr(0), m_ier(0), m_sior(0xbf), - m_frc_value(0), m_frc_latch(0), - m_vadr(0), m_yoff(0), - m_artdir(0xff), m_artdor(0xff), m_artsr(0), m_artcr(0), - m_one_sec_int_enabled(true), - m_key_status(0), m_interrupt_status(0), - m_time(), m_clock_state(0), - m_ear_last_state(0), - m_sio_pin(0), m_serial_rx(0), m_rs232_dcd(0), m_rs232_cts(0), - m_centronics_busy(0), m_centronics_perror(0) + driver_device(mconfig, type, tag), + device_serial_interface(mconfig, *this), + m_z80(*this, "maincpu"), + m_ram(*this, RAM_TAG), + m_nvram(*this, "nvram"), + m_centronics(*this, "centronics"), + m_ext_cas(*this, "extcas"), + m_ext_cas_timer(*this, "extcas_timer"), + m_speaker(*this, "speaker"), + m_sio(*this, "sio"), + m_rs232(*this, "rs232"), + m_caps1(*this, "capsule1"), m_caps2(*this, "capsule2"), + m_caps1_rom(nullptr), m_caps2_rom(nullptr), + m_ctrl1(0), m_icrb(0), m_bankr(0), + m_isr(0), m_ier(0), m_sior(0xbf), + m_frc_value(0), m_frc_latch(0), + m_vadr(0), m_yoff(0), + m_artdir(0xff), m_artdor(0xff), m_artsr(0), m_artcr(0), + m_one_sec_int_enabled(true), + m_key_status(0), m_interrupt_status(0), + m_time(), m_clock_state(0), + m_ear_last_state(0), + m_sio_pin(0), m_serial_rx(0), m_rs232_dcd(0), m_rs232_cts(0), + m_centronics_busy(0), m_centronics_perror(0) { } DECLARE_DRIVER_INIT( px4 ); @@ -144,8 +144,6 @@ protected: virtual void rcv_callback() override; virtual void rcv_complete() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; - private: // z80 interrupt sources enum @@ -827,11 +825,6 @@ WRITE_LINE_MEMBER( px4_state::rs232_cts_w ) m_rs232_cts = state; } -void px4_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - void px4_state::tra_callback() { if (ART_TX_ENABLED) diff --git a/src/mame/drivers/seta2.cpp b/src/mame/drivers/seta2.cpp index 36b7de042e8..89f078bfcac 100644 --- a/src/mame/drivers/seta2.cpp +++ b/src/mame/drivers/seta2.cpp @@ -705,7 +705,6 @@ void funcube_touchscreen_device::device_start() save_item(NAME(m_button_state)); save_item(NAME(m_serial_pos)); save_item(NAME(m_serial)); - device_serial_interface::register_save_state(machine().save(), this); } void funcube_touchscreen_device::device_reset() @@ -717,20 +716,17 @@ void funcube_touchscreen_device::device_reset() void funcube_touchscreen_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - if(id) { - device_serial_interface::device_timer(timer, id, param, ptr); - return; - } - - uint8_t button_state = m_btn->read(); - if(m_button_state != button_state) { - m_button_state = button_state; - m_serial[0] = button_state ? 0xfe : 0xfd; - m_serial[1] = m_x->read(); - m_serial[2] = m_y->read(); - m_serial[3] = 0xff; - m_serial_pos = 0; - transmit_register_setup(m_serial[m_serial_pos++]); + if(!id) { + uint8_t button_state = m_btn->read(); + if(m_button_state != button_state) { + m_button_state = button_state; + m_serial[0] = button_state ? 0xfe : 0xfd; + m_serial[1] = m_x->read(); + m_serial[2] = m_y->read(); + m_serial[3] = 0xff; + m_serial_pos = 0; + transmit_register_setup(m_serial[m_serial_pos++]); + } } } diff --git a/src/mame/includes/osborne1.h b/src/mame/includes/osborne1.h index e7d481a2b9c..c3e5906931e 100644 --- a/src/mame/includes/osborne1.h +++ b/src/mame/includes/osborne1.h @@ -28,12 +28,6 @@ class osborne1_state : public driver_device { public: - enum - { - TIMER_VIDEO, - TIMER_ACIA_RXC_TXC - }; - osborne1_state(const machine_config &mconfig, device_type type, const char *tag) : driver_device(mconfig, type, tag), m_maincpu(*this, "maincpu"), @@ -102,8 +96,8 @@ public: required_device m_floppy1; protected: - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; TIMER_CALLBACK_MEMBER(video_callback); + TIMER_CALLBACK_MEMBER(acia_rxc_txc_callback); TILE_GET_INFO_MEMBER(get_tile_info); diff --git a/src/mame/machine/apollo_kbd.cpp b/src/mame/machine/apollo_kbd.cpp index e8b9510fc7e..7db85daf53b 100644 --- a/src/mame/machine/apollo_kbd.cpp +++ b/src/mame/machine/apollo_kbd.cpp @@ -127,11 +127,6 @@ void apollo_kbd_device::device_reset() m_xmit_read = m_xmit_write = 0; } -void apollo_kbd_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - /*************************************************************************** cpu_context - return a string describing the current CPU context ***************************************************************************/ diff --git a/src/mame/machine/apollo_kbd.h b/src/mame/machine/apollo_kbd.h index 3d4c9d7789a..5097e95b722 100644 --- a/src/mame/machine/apollo_kbd.h +++ b/src/mame/machine/apollo_kbd.h @@ -58,7 +58,6 @@ private: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // serial overrides virtual void rcv_complete() override; // Rx completed receiving byte diff --git a/src/mame/machine/dec_lk201.cpp b/src/mame/machine/dec_lk201.cpp index d2eddf29cd5..cd95a4817ba 100644 --- a/src/mame/machine/dec_lk201.cpp +++ b/src/mame/machine/dec_lk201.cpp @@ -589,8 +589,8 @@ void lk201_device::device_timer(emu_timer &timer, device_timer_id id, int param, break; default: - device_serial_interface::device_timer(timer, id, param, ptr); -} + break; + } } diff --git a/src/mame/machine/esqpanel.cpp b/src/mame/machine/esqpanel.cpp index d043c10ca8f..2348cb29549 100644 --- a/src/mame/machine/esqpanel.cpp +++ b/src/mame/machine/esqpanel.cpp @@ -483,10 +483,6 @@ void esqpanel_device::device_timer(emu_timer &timer, device_timer_id id, int par { check_external_panel_server(); } - else - { - device_serial_interface::device_timer(timer, id, param, ptr); - } } void esqpanel_device::rcv_complete() // Rx completed receiving byte diff --git a/src/mame/machine/gridkeyb.cpp b/src/mame/machine/gridkeyb.cpp index 761aeb891d4..bfd03d0b6f5 100644 --- a/src/mame/machine/gridkeyb.cpp +++ b/src/mame/machine/gridkeyb.cpp @@ -241,12 +241,6 @@ void grid_keyboard_device::device_reset() } -void grid_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); -} - - void grid_keyboard_device::key_make(u8 row, u8 column) { send_translated((row << 4) | column); diff --git a/src/mame/machine/gridkeyb.h b/src/mame/machine/gridkeyb.h index fabf82c0ae2..1e11df26b90 100644 --- a/src/mame/machine/gridkeyb.h +++ b/src/mame/machine/gridkeyb.h @@ -65,7 +65,6 @@ protected: u32 clock); virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void key_make(u8 row, u8 column) override; virtual void key_repeat(u8 row, u8 column) override; virtual void send_key(u16 code); diff --git a/src/mame/machine/m20_kbd.cpp b/src/mame/machine/m20_kbd.cpp index 78942ef41b4..ff2358d3143 100644 --- a/src/mame/machine/m20_kbd.cpp +++ b/src/mame/machine/m20_kbd.cpp @@ -189,13 +189,6 @@ void m20_keyboard_device::device_reset() } -void m20_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); - buffered_rs232_device::device_timer(timer, id, param, ptr); -} - - void m20_keyboard_device::key_make(uint8_t row, uint8_t column) { uint8_t const row_code(((row < 6U) ? row : (0x18U | (row - 6U))) << 3); diff --git a/src/mame/machine/m20_kbd.h b/src/mame/machine/m20_kbd.h index 7b022f905f4..79cd9ef8151 100644 --- a/src/mame/machine/m20_kbd.h +++ b/src/mame/machine/m20_kbd.h @@ -14,7 +14,6 @@ public: protected: virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void key_make(uint8_t row, uint8_t column) override; private: diff --git a/src/mame/machine/midikbd.cpp b/src/mame/machine/midikbd.cpp index 35eb0dc5507..b1611d7703a 100644 --- a/src/mame/machine/midikbd.cpp +++ b/src/mame/machine/midikbd.cpp @@ -15,11 +15,7 @@ midi_keyboard_device::midi_keyboard_device(const machine_config &mconfig, const void midi_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) { - if(id) - { - device_serial_interface::device_timer(timer, id, param, ptr); - } - else + if(!id) { const int keyboard_notes[24] = { diff --git a/src/mame/machine/octo_kbd.cpp b/src/mame/machine/octo_kbd.cpp index b309bea81dc..8398078dad9 100644 --- a/src/mame/machine/octo_kbd.cpp +++ b/src/mame/machine/octo_kbd.cpp @@ -253,11 +253,5 @@ void octopus_keyboard_device::device_reset() start_processing(attotime::from_hz(9600)); } -void octopus_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); - buffered_rs232_device::device_timer(timer, id, param, ptr); -} - DEFINE_DEVICE_TYPE(OCTOPUS_KEYBOARD, octopus_keyboard_device, "octopus_kb", "Octopus Keyboard") diff --git a/src/mame/machine/octo_kbd.h b/src/mame/machine/octo_kbd.h index ab04f8def30..f6d4dd49f23 100644 --- a/src/mame/machine/octo_kbd.h +++ b/src/mame/machine/octo_kbd.h @@ -16,7 +16,6 @@ public: protected: virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void key_make(uint8_t row, uint8_t column) override; virtual void key_repeat(uint8_t row, uint8_t column) override; virtual void key_break(uint8_t row, uint8_t column) override; diff --git a/src/mame/machine/osborne1.cpp b/src/mame/machine/osborne1.cpp index 8089622808e..f535aaf2383 100644 --- a/src/mame/machine/osborne1.cpp +++ b/src/mame/machine/osborne1.cpp @@ -267,13 +267,13 @@ DRIVER_INIT_MEMBER( osborne1_state, osborne1 ) m_bank_fxxx->configure_entries(0, 1, m_ram->pointer() + 0xF000, 0); m_bank_fxxx->configure_entries(1, 1, m_ram->pointer() + 0x10000, 0); - m_video_timer = timer_alloc(TIMER_VIDEO); + m_video_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(osborne1_state::video_callback), this)); m_tilemap = &machine().tilemap().create( *m_gfxdecode, tilemap_get_info_delegate(FUNC(osborne1_state::get_tile_info), this), TILEMAP_SCAN_ROWS, 8, 10, 128, 32); - m_acia_rxc_txc_timer = timer_alloc(TIMER_ACIA_RXC_TXC); + m_acia_rxc_txc_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(osborne1_state::acia_rxc_txc_callback), this)); save_item(NAME(m_screen_pac)); save_item(NAME(m_acia_rxc_txc_div)); @@ -357,22 +357,6 @@ uint32_t osborne1_state::screen_update(screen_device &screen, bitmap_ind16 &bitm } -void osborne1_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - switch (id) - { - case TIMER_VIDEO: - video_callback(ptr, param); - break; - case TIMER_ACIA_RXC_TXC: - m_acia_rxc_txc_state = m_acia_rxc_txc_state ? 0 : 1; - update_acia_rxc_txc(); - break; - default: - assert_always(false, "Unknown id in osborne1_state::device_timer"); - } -} - TIMER_CALLBACK_MEMBER(osborne1_state::video_callback) { int const y = machine().first_screen()->vpos(); @@ -451,6 +435,12 @@ TIMER_CALLBACK_MEMBER(osborne1_state::video_callback) m_video_timer->adjust(machine().first_screen()->time_until_pos(y + 1, 0)); } +TIMER_CALLBACK_MEMBER(osborne1_state::acia_rxc_txc_callback) +{ + m_acia_rxc_txc_state = m_acia_rxc_txc_state ? 0 : 1; + update_acia_rxc_txc(); +} + TILE_GET_INFO_MEMBER(osborne1_state::get_tile_info) { diff --git a/src/mame/machine/qx10kbd.cpp b/src/mame/machine/qx10kbd.cpp index 540ec24a2a8..c467b4689ee 100644 --- a/src/mame/machine/qx10kbd.cpp +++ b/src/mame/machine/qx10kbd.cpp @@ -36,13 +36,6 @@ void qx10_keyboard_device::device_reset() } -void qx10_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); - buffered_rs232_device::device_timer(timer, id, param, ptr); -} - - void qx10_keyboard_device::key_make(uint8_t row, uint8_t column) { transmit_byte((column << 4) | row); diff --git a/src/mame/machine/qx10kbd.h b/src/mame/machine/qx10kbd.h index 11fd997875c..b351fd4ef73 100644 --- a/src/mame/machine/qx10kbd.h +++ b/src/mame/machine/qx10kbd.h @@ -17,7 +17,6 @@ public: protected: virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void key_make(uint8_t row, uint8_t column) override; private: diff --git a/src/mame/machine/rmnkbd.cpp b/src/mame/machine/rmnkbd.cpp index 93d9aa7d508..b2e0918b3bf 100644 --- a/src/mame/machine/rmnkbd.cpp +++ b/src/mame/machine/rmnkbd.cpp @@ -153,13 +153,6 @@ void rmnimbus_keyboard_device::device_reset() } -void rmnimbus_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); - buffered_rs232_device::device_timer(timer, id, param, ptr); -} - - void rmnimbus_keyboard_device::key_make(uint8_t row, uint8_t column) { transmit_byte((row << 3) | column); diff --git a/src/mame/machine/rmnkbd.h b/src/mame/machine/rmnkbd.h index f7a4ed26342..7f258276522 100644 --- a/src/mame/machine/rmnkbd.h +++ b/src/mame/machine/rmnkbd.h @@ -14,7 +14,6 @@ public: protected: virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void key_make(uint8_t row, uint8_t column) override; virtual void key_break(uint8_t row, uint8_t column) override; diff --git a/src/mame/machine/wangpckb.cpp b/src/mame/machine/wangpckb.cpp index 41727083683..d93988a479c 100644 --- a/src/mame/machine/wangpckb.cpp +++ b/src/mame/machine/wangpckb.cpp @@ -406,16 +406,6 @@ void wangpc_keyboard_device::device_reset() } -//------------------------------------------------- -// device_timer - handler timer events -//------------------------------------------------- - -void wangpc_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} - - //------------------------------------------------- // tra_callback - //------------------------------------------------- diff --git a/src/mame/machine/wangpckb.h b/src/mame/machine/wangpckb.h index 53adfb5b727..828ca0f7b9f 100644 --- a/src/mame/machine/wangpckb.h +++ b/src/mame/machine/wangpckb.h @@ -63,7 +63,6 @@ protected: // device-level overrides virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; // optional information overrides virtual const tiny_rom_entry *device_rom_region() const override; diff --git a/src/mame/machine/x68k_kbd.cpp b/src/mame/machine/x68k_kbd.cpp index ec3ed0cbe03..4d229a1ddba 100644 --- a/src/mame/machine/x68k_kbd.cpp +++ b/src/mame/machine/x68k_kbd.cpp @@ -295,12 +295,6 @@ void x68k_keyboard_device::device_reset() output_rxd(1); } -void x68k_keyboard_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_matrix_keyboard_interface::device_timer(timer, id, param, ptr); - buffered_rs232_device::device_timer(timer, id, param, ptr); -} - DEFINE_DEVICE_TYPE(X68K_KEYBOARD, x68k_keyboard_device, "x68k_keyboard", "Sharp X68000 Keyboard") diff --git a/src/mame/machine/x68k_kbd.h b/src/mame/machine/x68k_kbd.h index 13fff783557..e6fc09b3dbf 100644 --- a/src/mame/machine/x68k_kbd.h +++ b/src/mame/machine/x68k_kbd.h @@ -14,7 +14,6 @@ public: protected: virtual void device_start() override; virtual void device_reset() override; - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; virtual void key_make(uint8_t row, uint8_t column) override; virtual void key_repeat(uint8_t row, uint8_t column) override; virtual void key_break(uint8_t row, uint8_t column) override; diff --git a/src/mame/machine/zx8302.cpp b/src/mame/machine/zx8302.cpp index 5d17d2c1e19..f161efc364e 100644 --- a/src/mame/machine/zx8302.cpp +++ b/src/mame/machine/zx8302.cpp @@ -238,7 +238,6 @@ void zx8302_device::device_timer(emu_timer &timer, device_timer_id id, int param break; default: - device_serial_interface::device_timer(timer, id, param, ptr); break; } } diff --git a/src/mame/video/pcd.cpp b/src/mame/video/pcd.cpp index b0c89f075b6..670f86e31ac 100644 --- a/src/mame/video/pcd.cpp +++ b/src/mame/video/pcd.cpp @@ -468,8 +468,3 @@ void pcx_video_device::rcv_complete() m_mcu->set_input_line(MCS51_RX_LINE, ASSERT_LINE); m_mcu->set_input_line(MCS51_RX_LINE, CLEAR_LINE); } - -void pcx_video_device::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) -{ - device_serial_interface::device_timer(timer, id, param, ptr); -} diff --git a/src/mame/video/pcd.h b/src/mame/video/pcd.h index 5dfae74333a..1eefba579eb 100644 --- a/src/mame/video/pcd.h +++ b/src/mame/video/pcd.h @@ -100,7 +100,6 @@ protected: void device_reset() override; virtual const tiny_rom_entry *device_rom_region() const override; virtual void device_add_mconfig(machine_config &config) override; - void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) override; void tra_callback() override; void rcv_complete() override; -- cgit v1.2.3