-8042kbdc, mb89352, mc6854: Removed legacy devcb accessors. [Ryan Holtz]

This commit is contained in:
mooglyguy 2018-07-31 04:55:32 +02:00
parent 249b42112b
commit 0f21c3fc3a
21 changed files with 168 additions and 158 deletions

View File

@ -10,6 +10,7 @@
#include "emu.h" #include "emu.h"
#include "econet.h" #include "econet.h"
#include "bus/econet/e01.h"
//************************************************************************** //**************************************************************************
// DEVICE DEFINITIONS // DEVICE DEFINITIONS
@ -21,18 +22,22 @@ DEFINE_DEVICE_TYPE(ATOM_ECONET, atom_econet_device, "atom_econet", "Acorn Atom E
// device_add_mconfig - add device configuration // device_add_mconfig - add device configuration
//------------------------------------------------- //-------------------------------------------------
MACHINE_CONFIG_START(atom_econet_device::device_add_mconfig) void atom_econet_device::device_add_mconfig(machine_config &config)
{
/* econet */ /* econet */
MCFG_DEVICE_ADD(m_adlc, MC6854, 0) MC6854(config, m_adlc);
MCFG_MC6854_OUT_TXD_CB(WRITELINE(m_econet, econet_device, host_data_w)) m_adlc->out_txd_cb().set(m_econet, FUNC(econet_device::host_data_w));
MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, atom_econet_device, bus_irq_w)) m_adlc->out_irq_cb().set(FUNC(atom_econet_device::bus_irq_w));
ECONET(config, m_econet, 0); ECONET(config, m_econet, 0);
m_econet->clk_wr_callback().set(m_adlc, FUNC(mc6854_device::txc_w)); m_econet->clk_wr_callback().set(m_adlc, FUNC(mc6854_device::txc_w));
m_econet->clk_wr_callback().append(m_adlc, FUNC(mc6854_device::rxc_w)); m_econet->clk_wr_callback().append(m_adlc, FUNC(mc6854_device::rxc_w));
m_econet->data_wr_callback().set(m_adlc, FUNC(mc6854_device::set_rx)); m_econet->data_wr_callback().set(m_adlc, FUNC(mc6854_device::set_rx));
MCFG_ECONET_SLOT_ADD("econet254", 254, econet_devices, nullptr)
MACHINE_CONFIG_END econet_slot_device &slot(ECONET_SLOT(config, "econet254", 0));
econet_devices(slot);
slot.set_slot(254);
}
//************************************************************************** //**************************************************************************
// LIVE DEVICE // LIVE DEVICE

View File

@ -23,18 +23,22 @@ DEFINE_DEVICE_TYPE(ACORN_ECONET, acorn_econet_device, "acorn_econet", "Acorn Eco
// device_add_mconfig - add device configuration // device_add_mconfig - add device configuration
//------------------------------------------------- //-------------------------------------------------
MACHINE_CONFIG_START(acorn_econet_device::device_add_mconfig) void acorn_econet_device::device_add_mconfig(machine_config &config)
{
/* econet */ /* econet */
MCFG_DEVICE_ADD(m_adlc, MC6854, 0) MC6854(config, m_adlc);
MCFG_MC6854_OUT_TXD_CB(WRITELINE(m_econet, econet_device, host_data_w)) m_adlc->out_txd_cb().set(m_econet, FUNC(econet_device::host_data_w));
MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, acorn_econet_device, bus_irq_w)) m_adlc->out_irq_cb().set(FUNC(acorn_econet_device::bus_irq_w));
ECONET(config, m_econet, 0); ECONET(config, m_econet, 0);
m_econet->clk_wr_callback().set(m_adlc, FUNC(mc6854_device::txc_w)); m_econet->clk_wr_callback().set(m_adlc, FUNC(mc6854_device::txc_w));
m_econet->clk_wr_callback().append(m_adlc, FUNC(mc6854_device::rxc_w)); m_econet->clk_wr_callback().append(m_adlc, FUNC(mc6854_device::rxc_w));
m_econet->data_wr_callback().set(m_adlc, FUNC(mc6854_device::set_rx)); m_econet->data_wr_callback().set(m_adlc, FUNC(mc6854_device::set_rx));
MCFG_ECONET_SLOT_ADD("econet254", 254, econet_devices, nullptr)
MACHINE_CONFIG_END econet_slot_device &slot(ECONET_SLOT(config, "econet254", 0));
econet_devices(slot);
slot.set_slot(254);
}
//************************************************************************** //**************************************************************************
// LIVE DEVICE // LIVE DEVICE

View File

@ -161,7 +161,6 @@ private:
DECLARE_DEVICE_TYPE(ECONET, econet_device) DECLARE_DEVICE_TYPE(ECONET, econet_device)
DECLARE_DEVICE_TYPE(ECONET_SLOT, econet_slot_device) DECLARE_DEVICE_TYPE(ECONET_SLOT, econet_slot_device)
void econet_devices(device_slot_interface &device); void econet_devices(device_slot_interface &device);
#endif // MAME_BUS_ECONET_ECONET_H #endif // MAME_BUS_ECONET_ECONET_H

View File

@ -74,6 +74,7 @@ public:
typedef delegate<uint32_t (bool)> a20_cb; typedef delegate<uint32_t (bool)> a20_cb;
template <typename Object> void set_a20_callback(Object &&cb) { m_a20_callback = std::forward<Object>(cb); } template <typename Object> void set_a20_callback(Object &&cb) { m_a20_callback = std::forward<Object>(cb); }
template <class Object> devcb_base &set_shutdown_callback(Object &&cb) { return m_out_shutdown_func.set_callback(std::forward<Object>(cb)); } template <class Object> devcb_base &set_shutdown_callback(Object &&cb) { return m_out_shutdown_func.set_callback(std::forward<Object>(cb)); }
auto shutdown_callback() { return m_out_shutdown_func.bind(); }
protected: protected:
virtual void execute_run() override; virtual void execute_run() override;

View File

@ -16,28 +16,6 @@
#include "machine/pckeybrd.h" #include "machine/pckeybrd.h"
//**************************************************************************
// INTERFACE CONFIGURATION MACROS
//**************************************************************************
#define MCFG_KBDC8042_KEYBOARD_TYPE(_kbdt) \
downcast<kbdc8042_device &>(*device).set_keyboard_type(kbdc8042_device::_kbdt);
#define MCFG_KBDC8042_SYSTEM_RESET_CB(_devcb) \
downcast<kbdc8042_device &>(*device).set_system_reset_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_GATE_A20_CB(_devcb) \
downcast<kbdc8042_device &>(*device).set_gate_a20_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(_devcb) \
downcast<kbdc8042_device &>(*device).set_input_buffer_full_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_OUTPUT_BUFFER_EMPTY_CB(_devcb) \
downcast<kbdc8042_device &>(*device).set_output_buffer_empty_callback(DEVCB_##_devcb);
#define MCFG_KBDC8042_SPEAKER_CB(_devcb) \
downcast<kbdc8042_device &>(*device).set_speaker_callback(DEVCB_##_devcb);
//************************************************************************** //**************************************************************************
// TYPE DEFINITIONS // TYPE DEFINITIONS
//************************************************************************** //**************************************************************************
@ -58,11 +36,6 @@ public:
kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); kbdc8042_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
void set_keyboard_type(kbdc8042_type_t keybtype) { m_keybtype = keybtype; } void set_keyboard_type(kbdc8042_type_t keybtype) { m_keybtype = keybtype; }
template <class Object> devcb_base &set_system_reset_callback(Object &&cb) { return m_system_reset_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_gate_a20_callback(Object &&cb) { return m_gate_a20_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_input_buffer_full_callback(Object &&cb) { return m_input_buffer_full_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_output_buffer_empty_callback(Object &&cb) { return m_output_buffer_empty_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_speaker_callback(Object &&cb) { return m_speaker_cb.set_callback(std::forward<Object>(cb)); }
auto system_reset_callback() { return m_system_reset_cb.bind(); } auto system_reset_callback() { return m_system_reset_cb.bind(); }
auto gate_a20_callback() { return m_gate_a20_cb.bind(); } auto gate_a20_callback() { return m_gate_a20_cb.bind(); }
auto input_buffer_full_callback() { return m_input_buffer_full_cb.bind(); } auto input_buffer_full_callback() { return m_input_buffer_full_cb.bind(); }

View File

@ -247,11 +247,11 @@ MACHINE_CONFIG_START(fdc37c93x_device::device_add_mconfig)
MCFG_MC146818_IRQ_HANDLER(WRITELINE(*this, fdc37c93x_device, irq_rtc_w)) MCFG_MC146818_IRQ_HANDLER(WRITELINE(*this, fdc37c93x_device, irq_rtc_w))
MCFG_MC146818_CENTURY_INDEX(0x32) MCFG_MC146818_CENTURY_INDEX(0x32)
// keyboard // keyboard
MCFG_DEVICE_ADD("pc_kbdc", KBDC8042, 0) KBDC8042(config, m_kbdc);
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_PS2) m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_PS2);
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE(*this, fdc37c93x_device, irq_keyboard_w)) m_kbdc->input_buffer_full_callback().set(FUNC(fdc37c93x_device::irq_keyboard_w));
MCFG_KBDC8042_SYSTEM_RESET_CB(WRITELINE(*this, fdc37c93x_device, kbdp20_gp20_reset_w)) m_kbdc->system_reset_callback().set(FUNC(fdc37c93x_device::kbdp20_gp20_reset_w));
MCFG_KBDC8042_GATE_A20_CB(WRITELINE(*this, fdc37c93x_device, kbdp21_gp25_gatea20_w)) m_kbdc->gate_a20_callback().set(FUNC(fdc37c93x_device::kbdp21_gp25_gatea20_w));
MACHINE_CONFIG_END MACHINE_CONFIG_END
WRITE_LINE_MEMBER(fdc37c93x_device::irq_floppy_w) WRITE_LINE_MEMBER(fdc37c93x_device::irq_floppy_w)

View File

@ -11,20 +11,12 @@
#include "legscsi.h" #include "legscsi.h"
#define MCFG_MB89352A_IRQ_CB(_devcb) \
downcast<mb89352_device &>(*device).set_irq_callback(DEVCB_##_devcb);
#define MCFG_MB89352A_DRQ_CB(_devcb) \
downcast<mb89352_device &>(*device).set_drq_callback(DEVCB_##_devcb);
class mb89352_device : public legacy_scsi_host_adapter class mb89352_device : public legacy_scsi_host_adapter
{ {
public: public:
// construction/destruction // construction/destruction
mb89352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0); mb89352_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
template <class Object> devcb_base &set_irq_callback(Object &&cb) { return m_irq_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_drq_callback(Object &&cb) { return m_drq_cb.set_callback(std::forward<Object>(cb)); }
auto irq_cb() { return m_irq_cb.bind(); } auto irq_cb() { return m_irq_cb.bind(); }
auto drq_cb() { return m_drq_cb.bind(); } auto drq_cb() { return m_drq_cb.bind(); }

View File

@ -14,25 +14,6 @@
#pragma once #pragma once
#define MC6854_OUT_FRAME_CB(name) void name(uint8_t * data, int length)
#define MCFG_MC6854_OUT_IRQ_CB(_devcb) \
downcast<mc6854_device &>(*device).set_out_irq_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_TXD_CB(_devcb) \
downcast<mc6854_device &>(*device).set_out_txd_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_FRAME_CB(_class, _method) \
downcast<mc6854_device &>(*device).set_out_frame_callback(mc6854_device::out_frame_delegate(&_class::_method, #_class "::" #_method, this));
#define MCFG_MC6854_OUT_RTS_CB(_devcb) \
downcast<mc6854_device &>(*device).set_out_rts_callback(DEVCB_##_devcb);
#define MCFG_MC6854_OUT_DTR_CB(_devcb) \
downcast<mc6854_device &>(*device).set_out_dtr_callback(DEVCB_##_devcb);
class mc6854_device : public device_t class mc6854_device : public device_t
{ {
public: public:
@ -40,18 +21,24 @@ public:
typedef device_delegate<void (uint8_t *data, int length)> out_frame_delegate; typedef device_delegate<void (uint8_t *data, int length)> out_frame_delegate;
mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); mc6854_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
template <class Object> devcb_base &set_out_irq_callback(Object &&cb) { return m_out_irq_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_txd_callback(Object &&cb) { return m_out_txd_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_rts_callback(Object &&cb) { return m_out_rts_cb.set_callback(std::forward<Object>(cb)); }
template <class Object> devcb_base &set_out_dtr_callback(Object &&cb) { return m_out_dtr_cb.set_callback(std::forward<Object>(cb)); }
template <typename Object> void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward<Object>(cb); }
auto out_irq_cb() { return m_out_irq_cb.bind(); } auto out_irq_cb() { return m_out_irq_cb.bind(); }
auto out_txd_cb() { return m_out_txd_cb.bind(); } auto out_txd_cb() { return m_out_txd_cb.bind(); }
auto out_rts_cb() { return m_out_rts_cb.bind(); } auto out_rts_cb() { return m_out_rts_cb.bind(); }
auto out_dtr_cb() { return m_out_dtr_cb.bind(); } auto out_dtr_cb() { return m_out_dtr_cb.bind(); }
template <typename Object> void set_out_frame_callback(Object &&cb) { m_out_frame_cb = std::forward<Object>(cb); }
void set_out_frame_callback(out_frame_delegate callback) { m_out_frame_cb = callback; }
template <class FunctionClass> void set_out_frame_callback(const char *devname, void (FunctionClass::*callback)(uint8_t *, int), const char *name)
{
set_out_frame_callback(out_frame_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
}
template <class FunctionClass> void set_out_frame_callback(void (FunctionClass::*callback)(uint8_t *, int), const char *name)
{
set_out_frame_callback(out_frame_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
}
/* interface to CPU via address/data bus*/ /* interface to CPU via address/data bus*/
DECLARE_READ8_MEMBER( read ); DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write ); DECLARE_WRITE8_MEMBER( write );

View File

@ -140,17 +140,54 @@ public:
// inline configuration helpers // inline configuration helpers
void set_disable() { m_disabled = true; } void set_disable() { m_disabled = true; }
template <typename Object> void set_vblank_int(Object &&cb, const char *tag, int rate = 0) template <typename Object> void set_vblank_int(Object &&cb, const char *tag)
{ {
m_vblank_interrupt = std::forward<Object>(cb); m_vblank_interrupt = std::forward<Object>(cb);
m_vblank_interrupt_screen = tag; m_vblank_interrupt_screen = tag;
} }
void set_vblank_int(device_interrupt_delegate callback, const char *tag)
{
m_vblank_interrupt = callback;
m_vblank_interrupt_screen = tag;
}
template <class FunctionClass> void set_vblank_int(const char *tag, const char *devname, void (FunctionClass::*callback)(device_t &), const char *name)
{
set_vblank_int(device_interrupt_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), tag);
}
template <class FunctionClass> void set_vblank_int(const char *tag, void (FunctionClass::*callback)(device_t &), const char *name)
{
set_vblank_int(device_interrupt_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), tag);
}
template <typename Object> void set_periodic_int(Object &&cb, const attotime &rate) template <typename Object> void set_periodic_int(Object &&cb, const attotime &rate)
{ {
m_timed_interrupt = std::forward<Object>(cb); m_timed_interrupt = std::forward<Object>(cb);
m_timed_interrupt_period = rate; m_timed_interrupt_period = rate;
} }
void set_periodic_int(device_interrupt_delegate callback, const attotime &rate)
{
m_timed_interrupt = callback;
m_timed_interrupt_period = rate;
}
template <class FunctionClass> void set_periodic_int(const char *devname, void (FunctionClass::*callback)(device_t &), const char *name, const attotime &rate)
{
set_periodic_int(device_interrupt_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)), rate);
}
template <class FunctionClass> void set_periodic_int(void (FunctionClass::*callback)(device_t &), const char *name, const attotime &rate)
{
set_periodic_int(device_interrupt_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)), rate);
}
template <typename Object> void set_irq_acknowledge_callback(Object &&cb) { m_driver_irq = std::forward<Object>(cb); } template <typename Object> void set_irq_acknowledge_callback(Object &&cb) { m_driver_irq = std::forward<Object>(cb); }
void set_irq_acknowledge_callback(device_irq_acknowledge_delegate callback) { m_driver_irq = callback; }
template <class FunctionClass> void set_irq_acknowledge_callback(const char *devname, int (FunctionClass::*callback)(device_t &, int), const char *name)
{
set_irq_acknowledge_callback(device_irq_acknowledge_delegate(callback, name, devname, static_cast<FunctionClass *>(nullptr)));
}
template <class FunctionClass> void set_irq_acknowledge_callback(int (FunctionClass::*callback)(device_t &, int), const char *name)
{
set_irq_acknowledge_callback(device_irq_acknowledge_delegate(callback, name, nullptr, static_cast<FunctionClass *>(nullptr)));
}
// execution management // execution management
device_scheduler &scheduler() const { assert(m_scheduler != nullptr); return *m_scheduler; } device_scheduler &scheduler() const { assert(m_scheduler != nullptr); return *m_scheduler; }

View File

@ -830,9 +830,9 @@ static INPUT_PORTS_START( accomm )
INPUT_PORTS_END INPUT_PORTS_END
MACHINE_CONFIG_START(accomm_state::accomm) MACHINE_CONFIG_START(accomm_state::accomm)
MCFG_DEVICE_ADD("maincpu", G65816, 16_MHz_XTAL / 8) G65816(config, m_maincpu, 16_MHz_XTAL / 8);
MCFG_DEVICE_PROGRAM_MAP(main_map) m_maincpu->set_addrmap(AS_PROGRAM, &accomm_state::main_map);
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", accomm_state, vbl_int) m_maincpu->set_vblank_int("screen", FUNC(accomm_state::vbl_int));
MCFG_SCREEN_ADD("screen", RASTER) MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_REFRESH_RATE( 50.08 ) MCFG_SCREEN_REFRESH_RATE( 50.08 )
@ -881,9 +881,9 @@ MACHINE_CONFIG_START(accomm_state::accomm)
MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, accomm_state, write_acia_clock)) MCFG_CLOCK_SIGNAL_HANDLER(WRITELINE(*this, accomm_state, write_acia_clock))
/* econet */ /* econet */
MCFG_DEVICE_ADD("mc6854", MC6854, 0) MC6854(config, m_adlc);
MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w)) m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
MCFG_MC6854_OUT_IRQ_CB(INPUTLINE("maincpu", G65816_LINE_NMI)) m_adlc->out_irq_cb().set_inputline(m_maincpu, G65816_LINE_NMI);
MCFG_ECONET_ADD() MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, accomm_state, econet_clk_w)) MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, accomm_state, econet_clk_w))
MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx)) MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx))

View File

@ -963,9 +963,9 @@ MACHINE_CONFIG_START(bbc_state::bbcb)
MCFG_BBC_FDC_SLOT_DRQ_HANDLER(WRITELINE(*this, bbc_state, fdc_drq_w)) MCFG_BBC_FDC_SLOT_DRQ_HANDLER(WRITELINE(*this, bbc_state, fdc_drq_w))
/* econet */ /* econet */
MCFG_DEVICE_ADD("mc6854", MC6854, 0) MC6854(config, m_adlc);
MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w)) m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, bbc_state, adlc_irq_w)) m_adlc->out_irq_cb().set(FUNC(bbc_state::adlc_irq_w));
MCFG_ECONET_ADD() MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, bbc_state, econet_clk_w)) MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, bbc_state, econet_clk_w))
MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx)) MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx))
@ -1434,9 +1434,9 @@ MACHINE_CONFIG_START(bbc_state::bbcm)
MCFG_FLOPPY_DRIVE_SOUND(true) MCFG_FLOPPY_DRIVE_SOUND(true)
/* econet */ /* econet */
MCFG_DEVICE_ADD("mc6854", MC6854, 0) MC6854(config, m_adlc);
MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w)) m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, bbc_state, adlc_irq_w)) m_adlc->out_irq_cb().set(FUNC(bbc_state::adlc_irq_w));
MCFG_ECONET_ADD() MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, bbc_state, econet_clk_w)) MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, bbc_state, econet_clk_w))
MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx)) MCFG_ECONET_DATA_CALLBACK(WRITELINE("mc6854", mc6854_device, set_rx))

View File

@ -240,11 +240,12 @@ MACHINE_CONFIG_START(mtxl_state::at486)
// remove the keyboard controller and use the HLE one which allow keys to be unmapped // remove the keyboard controller and use the HLE one which allow keys to be unmapped
MCFG_DEVICE_REMOVE("mb:keybc"); MCFG_DEVICE_REMOVE("mb:keybc");
MCFG_DEVICE_REMOVE("mb:pc_kbdc"); MCFG_DEVICE_REMOVE("mb:pc_kbdc");
MCFG_DEVICE_ADD("kbdc", KBDC8042, 0) kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386) kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) kbdc.system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20)) kbdc.gate_a20_callback().set_inputline(m_maincpu, INPUT_LINE_A20);
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE("mb:pic8259_master", pic8259_device, ir1_w)) kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));
MCFG_DEVICE_REMOVE("mb:rtc") MCFG_DEVICE_REMOVE("mb:rtc")
MCFG_DS12885_ADD("mb:rtc") MCFG_DS12885_ADD("mb:rtc")
MCFG_MC146818_IRQ_HANDLER(WRITELINE("mb:pic8259_slave", pic8259_device, ir0_w)) MCFG_MC146818_IRQ_HANDLER(WRITELINE("mb:pic8259_slave", pic8259_device, ir0_w))

View File

@ -290,9 +290,9 @@ MACHINE_CONFIG_START(poly_state::poly)
MCFG_RAM_EXTRA_OPTIONS("64K") MCFG_RAM_EXTRA_OPTIONS("64K")
/* network */ /* network */
MCFG_DEVICE_ADD("mc6854", MC6854, 0) MC6854(config, m_adlc);
//MCFG_MC6854_OUT_TXD_CB(WRITELINE(NETWORK_TAG, poly_network_device, data_w)) //m_adlc->out_txd_cb().set(NETWORK_TAG, FUNC(poly_network_device::data_w));
//MCFG_MC6854_OUT_IRQ_CB(WRITELINE("irqs", input_merger_device, in_w<0>)) //m_adlc->out_irq_cb().set("irqs", FUNC(input_merger_device::in_w<0>));
//MCFG_POLY_NETWORK_ADD() //MCFG_POLY_NETWORK_ADD()
//MCFG_POLY_NETWORK_CLK_CB(WRITELINE(*this, poly_state, network_clk_w)) //MCFG_POLY_NETWORK_CLK_CB(WRITELINE(*this, poly_state, network_clk_w))

View File

@ -348,8 +348,8 @@ MACHINE_CONFIG_START(proteus_state::proteus)
MCFG_RAM_DEFAULT_SIZE("64K") MCFG_RAM_DEFAULT_SIZE("64K")
/* network */ /* network */
MCFG_DEVICE_ADD("mc6854", MC6854, 0) MC6854(config, m_adlc);
MCFG_MC6854_OUT_IRQ_CB(WRITELINE("irqs", input_merger_device, in_w<0>)) m_adlc->out_irq_cb().set("irqs", FUNC(input_merger_device::in_w<0>));
MCFG_DEVICE_ADD("ptm", PTM6840, 4_MHz_XTAL / 2) MCFG_DEVICE_ADD("ptm", PTM6840, 4_MHz_XTAL / 2)
MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0) MCFG_PTM6840_EXTERNAL_CLOCKS(0, 0, 0)

View File

@ -2490,10 +2490,10 @@ MACHINE_CONFIG_START(segas32_cd_state::device_add_mconfig)
MCFG_DEVICE_MODIFY("maincpu") MCFG_DEVICE_MODIFY("maincpu")
MCFG_DEVICE_PROGRAM_MAP(system32_cd_map) MCFG_DEVICE_PROGRAM_MAP(system32_cd_map)
MCFG_DEVICE_ADD("mb89352", MB89352A, 8000000) mb89352_device &scsictrl(MB89352A(config, "mb89352", 8000000));
MCFG_LEGACY_SCSI_PORT("scsi") scsictrl.set_scsi_port("scsi");
MCFG_MB89352A_IRQ_CB(WRITELINE(*this, segas32_cd_state, scsi_irq_w)) scsictrl.irq_cb().set(FUNC(segas32_cd_state::scsi_irq_w));
MCFG_MB89352A_DRQ_CB(WRITELINE(*this, segas32_cd_state, scsi_drq_w)) scsictrl.drq_cb().set(FUNC(segas32_cd_state::scsi_drq_w));
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0) MCFG_DEVICE_ADD("scsi", SCSI_PORT, 0)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_0) MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE1, "cdrom", SCSICD, SCSI_ID_0)

View File

@ -696,8 +696,8 @@ MACHINE_CONFIG_START(thomson_state::to7)
/* network */ /* network */
MCFG_DEVICE_ADD("mc6854", MC6854, 0) MC6854(config, m_mc6854);
MCFG_MC6854_OUT_FRAME_CB(thomson_state, to7_network_got_frame) m_mc6854->set_out_frame_callback(FUNC(thomson_state::to7_network_got_frame));
/* pia */ /* pia */

View File

@ -412,9 +412,9 @@ MACHINE_CONFIG_START(tv990_state::tv990)
MCFG_RS232_DCD_HANDLER(WRITELINE(UART1_TAG, ns16450_device, dcd_w)) MCFG_RS232_DCD_HANDLER(WRITELINE(UART1_TAG, ns16450_device, dcd_w))
MCFG_RS232_CTS_HANDLER(WRITELINE(UART1_TAG, ns16450_device, cts_w)) MCFG_RS232_CTS_HANDLER(WRITELINE(UART1_TAG, ns16450_device, cts_w))
MCFG_DEVICE_ADD("pc_kbdc", KBDC8042, 0) KBDC8042(config, m_kbdc);
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386) m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(INPUTLINE("maincpu", M68K_IRQ_2)) m_kbdc->input_buffer_full_callback().set_inputline("maincpu", M68K_IRQ_2);
MCFG_NVRAM_ADD_0FILL("nvram") MCFG_NVRAM_ADD_0FILL("nvram")

View File

@ -28,8 +28,8 @@ protected:
virtual void dack16_w(int line, uint16_t data) override; virtual void dack16_w(int line, uint16_t data) override;
virtual void device_add_mconfig(machine_config &config) override; virtual void device_add_mconfig(machine_config &config) override;
private: private:
required_device<dac_word_interface> m_rdac; required_device<dac_16bit_r2r_device> m_rdac;
required_device<dac_word_interface> m_ldac; required_device<dac_16bit_r2r_device> m_ldac;
uint16_t m_count; uint16_t m_count;
uint16_t m_curcount; uint16_t m_curcount;
uint16_t m_sample[2]; uint16_t m_sample[2];
@ -126,20 +126,29 @@ void vis_audio_device::device_timer(emu_timer &timer, device_timer_id id, int pa
} }
} }
MACHINE_CONFIG_START(vis_audio_device::device_add_mconfig) void vis_audio_device::device_add_mconfig(machine_config &config)
{
SPEAKER(config, "lspeaker").front_left(); SPEAKER(config, "lspeaker").front_left();
SPEAKER(config, "rspeaker").front_right(); SPEAKER(config, "rspeaker").front_right();
MCFG_DEVICE_ADD("ymf262", YMF262, XTAL(14'318'181))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.00) ymf262_device &ymf262(YMF262(config, "ymf262", XTAL(14'318'181)));
MCFG_SOUND_ROUTE(1, "rspeaker", 1.00) ymf262.add_route(0, "lspeaker", 1.00);
MCFG_SOUND_ROUTE(2, "lspeaker", 1.00) ymf262.add_route(1, "rspeaker", 1.00);
MCFG_SOUND_ROUTE(3, "rspeaker", 1.00) ymf262.add_route(2, "lspeaker", 1.00);
MCFG_DEVICE_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // sanyo lc7883k ymf262.add_route(3, "rspeaker", 1.00);
MCFG_DEVICE_ADD("rdac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "rspeaker", 1.0) // sanyo lc7883k
MCFG_DEVICE_ADD("vref", VOLTAGE_REGULATOR, 0) MCFG_VOLTAGE_REGULATOR_OUTPUT(5.0) DAC_16BIT_R2R(config, m_ldac, 0);
MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT) DAC_16BIT_R2R(config, m_rdac, 0);
MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT) m_ldac->add_route(ALL_OUTPUTS, "lspeaker", 1.0); // sanyo lc7883k
MACHINE_CONFIG_END m_rdac->add_route(ALL_OUTPUTS, "rspeaker", 1.0); // sanyo lc7883k
voltage_regulator_device &vreg(VOLTAGE_REGULATOR(config, "vref"));
vreg.set_output(5.0);
vreg.add_route(0, "ldac", 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, "rdac", 1.0, DAC_VREF_POS_INPUT);
vreg.add_route(0, "ldac", -1.0, DAC_VREF_NEG_INPUT);
vreg.add_route(0, "rdac", -1.0, DAC_VREF_NEG_INPUT);
}
READ8_MEMBER(vis_audio_device::pcm_r) READ8_MEMBER(vis_audio_device::pcm_r)
{ {
@ -258,11 +267,12 @@ vis_vga_device::vis_vga_device(const machine_config &mconfig, const char *tag, d
set_screen(*this, "screen"); set_screen(*this, "screen");
} }
MACHINE_CONFIG_START(vis_vga_device::device_add_mconfig) void vis_vga_device::device_add_mconfig(machine_config &config)
MCFG_SCREEN_ADD("screen", RASTER) {
MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480) screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, vis_vga_device, screen_update) screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480);
MACHINE_CONFIG_END screen.set_screen_update(FUNC(vis_vga_device::screen_update));
}
void vis_vga_device::recompute_params() void vis_vga_device::recompute_params()
{ {
@ -720,8 +730,8 @@ private:
DECLARE_WRITE16_MEMBER(pad_w); DECLARE_WRITE16_MEMBER(pad_w);
DECLARE_READ8_MEMBER(unk1_r); DECLARE_READ8_MEMBER(unk1_r);
DECLARE_WRITE8_MEMBER(unk1_w); DECLARE_WRITE8_MEMBER(unk1_w);
void at16_io(address_map &map); void io_map(address_map &map);
void at16_map(address_map &map); void main_map(address_map &map);
void machine_reset() override; void machine_reset() override;
@ -834,7 +844,7 @@ WRITE8_MEMBER(vis_state::sysctl_w)
m_sysctl = data; m_sysctl = data;
} }
void vis_state::at16_map(address_map &map) void vis_state::main_map(address_map &map)
{ {
map.unmap_value_high(); map.unmap_value_high();
map(0x000000, 0x09ffff).ram(); map(0x000000, 0x09ffff).ram();
@ -844,7 +854,7 @@ void vis_state::at16_map(address_map &map)
map(0xff0000, 0xffffff).rom().region("bios", 0xf0000); map(0xff0000, 0xffffff).rom().region("bios", 0xf0000);
} }
void vis_state::at16_io(address_map &map) void vis_state::io_map(address_map &map)
{ {
map.unmap_value_high(); map.unmap_value_high();
map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write)); map(0x0000, 0x001f).rw("mb:dma8237_1", FUNC(am9517a_device::read), FUNC(am9517a_device::write));
@ -890,30 +900,31 @@ static INPUT_PORTS_START(vis)
PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, vis_state, update, 0) PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_UNKNOWN ) PORT_CHANGED_MEMBER(DEVICE_SELF, vis_state, update, 0)
INPUT_PORTS_END INPUT_PORTS_END
MACHINE_CONFIG_START(vis_state::vis) void vis_state::vis(machine_config &config)
{
/* basic machine hardware */ /* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", I80286, XTAL(12'000'000) ) i80286_cpu_device &maincpu(I80286(config, "maincpu", XTAL(12'000'000)));
MCFG_DEVICE_PROGRAM_MAP(at16_map) maincpu.set_addrmap(AS_PROGRAM, &vis_state::main_map);
MCFG_DEVICE_IO_MAP(at16_io) maincpu.set_addrmap(AS_IO, &vis_state::io_map);
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb) maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown));
MCFG_80286_SHUTDOWN(WRITELINE("mb", at_mb_device, shutdown)) maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
MCFG_DEVICE_ADD("mb", AT_MB, 0) AT_MB(config, "mb", 0);
// this doesn't have a real keyboard controller // the vis doesn't have a real keyboard controller
MCFG_DEVICE_REMOVE("mb:keybc") config.device_remove("mb:keybc");
MCFG_DEVICE_REMOVE("mb:pc_kbdc") config.device_remove("mb:pc_kbdc");
MCFG_DEVICE_ADD("kbdc", KBDC8042, 0) kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386) kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET)) kbdc.system_reset_callback().set_inputline("maincpu", INPUT_LINE_RESET);
MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20)) kbdc.gate_a20_callback().set_inputline("maincpu", INPUT_LINE_A20);
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE("mb:pic8259_master", pic8259_device, ir1_w)) kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));
// FIXME: determine ISA bus clock // FIXME: determine ISA bus clock
MCFG_DEVICE_ADD("mcd", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "mcd", true) ISA16_SLOT(config, "mcd", 0, "mb:isabus", pc_isa16_cards, "mcd", true);
MCFG_DEVICE_ADD("visaudio", ISA16_SLOT, 0, "mb:isabus", vis_cards, "visaudio", true) ISA16_SLOT(config, "visaudio", 0, "mb:isabus", vis_cards, "visaudio", true);
MCFG_DEVICE_ADD("visvga", ISA16_SLOT, 0, "mb:isabus", vis_cards, "visvga", true) ISA16_SLOT(config, "visvga", 0, "mb:isabus", vis_cards, "visvga", true);
MACHINE_CONFIG_END }
ROM_START(vis) ROM_START(vis)
ROM_REGION(0x100000,"bios", 0) ROM_REGION(0x100000,"bios", 0)

View File

@ -1727,10 +1727,10 @@ MACHINE_CONFIG_START(x68k_state::x68ksupr)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE6, "harddisk", SCSIHD, SCSI_ID_5) MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE6, "harddisk", SCSIHD, SCSI_ID_5)
MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE7, "cdrom", SCSICD, SCSI_ID_6) MCFG_SCSIDEV_ADD("scsi:" SCSI_PORT_DEVICE7, "cdrom", SCSICD, SCSI_ID_6)
MCFG_DEVICE_ADD("mb89352", MB89352A, 40_MHz_XTAL / 8) mb89352_device &scsictrl(MB89352A(config, "mb89352", 40_MHz_XTAL / 8));
MCFG_LEGACY_SCSI_PORT("scsi") scsictrl.set_scsi_port("scsi");
MCFG_MB89352A_IRQ_CB(WRITELINE(*this, x68k_state, x68k_scsi_irq)) scsictrl.irq_cb().set(FUNC(x68k_state::x68k_scsi_irq));
MCFG_MB89352A_DRQ_CB(WRITELINE(*this, x68k_state, x68k_scsi_drq)) scsictrl.drq_cb().set(FUNC(x68k_state::x68k_scsi_drq));
VICON(config.replace(), m_crtc, 38.86363_MHz_XTAL); VICON(config.replace(), m_crtc, 38.86363_MHz_XTAL);
m_crtc->set_screen("screen"); m_crtc->set_screen("screen");

View File

@ -374,7 +374,7 @@ private:
int m_centronics_busy; int m_centronics_busy;
int m_centronics_perror; int m_centronics_perror;
MC6854_OUT_FRAME_CB(to7_network_got_frame); void to7_network_got_frame(uint8_t *data, int length);
void mo5(address_map &map); void mo5(address_map &map);
void mo5nr(address_map &map); void mo5nr(address_map &map);

View File

@ -1628,7 +1628,7 @@ TIMER_CALLBACK_MEMBER( thomson_state::ans )
*/ */
MC6854_OUT_FRAME_CB(thomson_state::to7_network_got_frame) void thomson_state::to7_network_got_frame(uint8_t *data, int length)
{ {
LOG(( "%f to7_network_got_frame:", machine().time().as_double() )); LOG(( "%f to7_network_got_frame:", machine().time().as_double() ));
for ( int i = 0; i < length; i++ ) for ( int i = 0; i < length; i++ )