-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 "econet.h"
#include "bus/econet/e01.h"
//**************************************************************************
// 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
//-------------------------------------------------
MACHINE_CONFIG_START(atom_econet_device::device_add_mconfig)
void atom_econet_device::device_add_mconfig(machine_config &config)
{
/* econet */
MCFG_DEVICE_ADD(m_adlc, MC6854, 0)
MCFG_MC6854_OUT_TXD_CB(WRITELINE(m_econet, econet_device, host_data_w))
MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, atom_econet_device, bus_irq_w))
MC6854(config, m_adlc);
m_adlc->out_txd_cb().set(m_econet, FUNC(econet_device::host_data_w));
m_adlc->out_irq_cb().set(FUNC(atom_econet_device::bus_irq_w));
ECONET(config, m_econet, 0);
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->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

View File

@ -23,18 +23,22 @@ DEFINE_DEVICE_TYPE(ACORN_ECONET, acorn_econet_device, "acorn_econet", "Acorn Eco
// 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 */
MCFG_DEVICE_ADD(m_adlc, MC6854, 0)
MCFG_MC6854_OUT_TXD_CB(WRITELINE(m_econet, econet_device, host_data_w))
MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, acorn_econet_device, bus_irq_w))
MC6854(config, m_adlc);
m_adlc->out_txd_cb().set(m_econet, FUNC(econet_device::host_data_w));
m_adlc->out_irq_cb().set(FUNC(acorn_econet_device::bus_irq_w));
ECONET(config, m_econet, 0);
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->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

View File

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

View File

@ -74,6 +74,7 @@ public:
typedef delegate<uint32_t (bool)> a20_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)); }
auto shutdown_callback() { return m_out_shutdown_func.bind(); }
protected:
virtual void execute_run() override;

View File

@ -16,28 +16,6 @@
#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
//**************************************************************************
@ -58,11 +36,6 @@ public:
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; }
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 gate_a20_callback() { return m_gate_a20_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_CENTURY_INDEX(0x32)
// keyboard
MCFG_DEVICE_ADD("pc_kbdc", KBDC8042, 0)
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_PS2)
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE(*this, fdc37c93x_device, irq_keyboard_w))
MCFG_KBDC8042_SYSTEM_RESET_CB(WRITELINE(*this, fdc37c93x_device, kbdp20_gp20_reset_w))
MCFG_KBDC8042_GATE_A20_CB(WRITELINE(*this, fdc37c93x_device, kbdp21_gp25_gatea20_w))
KBDC8042(config, m_kbdc);
m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_PS2);
m_kbdc->input_buffer_full_callback().set(FUNC(fdc37c93x_device::irq_keyboard_w));
m_kbdc->system_reset_callback().set(FUNC(fdc37c93x_device::kbdp20_gp20_reset_w));
m_kbdc->gate_a20_callback().set(FUNC(fdc37c93x_device::kbdp21_gp25_gatea20_w));
MACHINE_CONFIG_END
WRITE_LINE_MEMBER(fdc37c93x_device::irq_floppy_w)

View File

@ -11,20 +11,12 @@
#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
{
public:
// construction/destruction
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 drq_cb() { return m_drq_cb.bind(); }

View File

@ -14,25 +14,6 @@
#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
{
public:
@ -40,18 +21,24 @@ public:
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_txd_cb() { return m_out_txd_cb.bind(); }
auto out_rts_cb() { return m_out_rts_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*/
DECLARE_READ8_MEMBER( read );
DECLARE_WRITE8_MEMBER( write );

View File

@ -140,17 +140,54 @@ public:
// inline configuration helpers
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_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)
{
m_timed_interrupt = std::forward<Object>(cb);
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); }
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
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
MACHINE_CONFIG_START(accomm_state::accomm)
MCFG_DEVICE_ADD("maincpu", G65816, 16_MHz_XTAL / 8)
MCFG_DEVICE_PROGRAM_MAP(main_map)
MCFG_DEVICE_VBLANK_INT_DRIVER("screen", accomm_state, vbl_int)
G65816(config, m_maincpu, 16_MHz_XTAL / 8);
m_maincpu->set_addrmap(AS_PROGRAM, &accomm_state::main_map);
m_maincpu->set_vblank_int("screen", FUNC(accomm_state::vbl_int));
MCFG_SCREEN_ADD("screen", RASTER)
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))
/* econet */
MCFG_DEVICE_ADD("mc6854", MC6854, 0)
MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w))
MCFG_MC6854_OUT_IRQ_CB(INPUTLINE("maincpu", G65816_LINE_NMI))
MC6854(config, m_adlc);
m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
m_adlc->out_irq_cb().set_inputline(m_maincpu, G65816_LINE_NMI);
MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, accomm_state, econet_clk_w))
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))
/* econet */
MCFG_DEVICE_ADD("mc6854", MC6854, 0)
MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w))
MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, bbc_state, adlc_irq_w))
MC6854(config, m_adlc);
m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
m_adlc->out_irq_cb().set(FUNC(bbc_state::adlc_irq_w));
MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, bbc_state, econet_clk_w))
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)
/* econet */
MCFG_DEVICE_ADD("mc6854", MC6854, 0)
MCFG_MC6854_OUT_TXD_CB(WRITELINE(ECONET_TAG, econet_device, host_data_w))
MCFG_MC6854_OUT_IRQ_CB(WRITELINE(*this, bbc_state, adlc_irq_w))
MC6854(config, m_adlc);
m_adlc->out_txd_cb().set(ECONET_TAG, FUNC(econet_device::host_data_w));
m_adlc->out_irq_cb().set(FUNC(bbc_state::adlc_irq_w));
MCFG_ECONET_ADD()
MCFG_ECONET_CLK_CALLBACK(WRITELINE(*this, bbc_state, econet_clk_w))
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
MCFG_DEVICE_REMOVE("mb:keybc");
MCFG_DEVICE_REMOVE("mb:pc_kbdc");
MCFG_DEVICE_ADD("kbdc", KBDC8042, 0)
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386)
MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET))
MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20))
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE("mb:pic8259_master", pic8259_device, ir1_w))
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
kbdc.system_reset_callback().set_inputline(m_maincpu, INPUT_LINE_RESET);
kbdc.gate_a20_callback().set_inputline(m_maincpu, INPUT_LINE_A20);
kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));
MCFG_DEVICE_REMOVE("mb:rtc")
MCFG_DS12885_ADD("mb:rtc")
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")
/* network */
MCFG_DEVICE_ADD("mc6854", MC6854, 0)
//MCFG_MC6854_OUT_TXD_CB(WRITELINE(NETWORK_TAG, poly_network_device, data_w))
//MCFG_MC6854_OUT_IRQ_CB(WRITELINE("irqs", input_merger_device, in_w<0>))
MC6854(config, m_adlc);
//m_adlc->out_txd_cb().set(NETWORK_TAG, FUNC(poly_network_device::data_w));
//m_adlc->out_irq_cb().set("irqs", FUNC(input_merger_device::in_w<0>));
//MCFG_POLY_NETWORK_ADD()
//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")
/* network */
MCFG_DEVICE_ADD("mc6854", MC6854, 0)
MCFG_MC6854_OUT_IRQ_CB(WRITELINE("irqs", input_merger_device, in_w<0>))
MC6854(config, m_adlc);
m_adlc->out_irq_cb().set("irqs", FUNC(input_merger_device::in_w<0>));
MCFG_DEVICE_ADD("ptm", PTM6840, 4_MHz_XTAL / 2)
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_PROGRAM_MAP(system32_cd_map)
MCFG_DEVICE_ADD("mb89352", MB89352A, 8000000)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_MB89352A_IRQ_CB(WRITELINE(*this, segas32_cd_state, scsi_irq_w))
MCFG_MB89352A_DRQ_CB(WRITELINE(*this, segas32_cd_state, scsi_drq_w))
mb89352_device &scsictrl(MB89352A(config, "mb89352", 8000000));
scsictrl.set_scsi_port("scsi");
scsictrl.irq_cb().set(FUNC(segas32_cd_state::scsi_irq_w));
scsictrl.drq_cb().set(FUNC(segas32_cd_state::scsi_drq_w));
MCFG_DEVICE_ADD("scsi", SCSI_PORT, 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 */
MCFG_DEVICE_ADD("mc6854", MC6854, 0)
MCFG_MC6854_OUT_FRAME_CB(thomson_state, to7_network_got_frame)
MC6854(config, m_mc6854);
m_mc6854->set_out_frame_callback(FUNC(thomson_state::to7_network_got_frame));
/* 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_CTS_HANDLER(WRITELINE(UART1_TAG, ns16450_device, cts_w))
MCFG_DEVICE_ADD("pc_kbdc", KBDC8042, 0)
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386)
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(INPUTLINE("maincpu", M68K_IRQ_2))
KBDC8042(config, m_kbdc);
m_kbdc->set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
m_kbdc->input_buffer_full_callback().set_inputline("maincpu", M68K_IRQ_2);
MCFG_NVRAM_ADD_0FILL("nvram")

View File

@ -28,8 +28,8 @@ protected:
virtual void dack16_w(int line, uint16_t data) override;
virtual void device_add_mconfig(machine_config &config) override;
private:
required_device<dac_word_interface> m_rdac;
required_device<dac_word_interface> m_ldac;
required_device<dac_16bit_r2r_device> m_rdac;
required_device<dac_16bit_r2r_device> m_ldac;
uint16_t m_count;
uint16_t m_curcount;
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, "rspeaker").front_right();
MCFG_DEVICE_ADD("ymf262", YMF262, XTAL(14'318'181))
MCFG_SOUND_ROUTE(0, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(1, "rspeaker", 1.00)
MCFG_SOUND_ROUTE(2, "lspeaker", 1.00)
MCFG_SOUND_ROUTE(3, "rspeaker", 1.00)
MCFG_DEVICE_ADD("ldac", DAC_16BIT_R2R, 0) MCFG_SOUND_ROUTE(ALL_OUTPUTS, "lspeaker", 1.0) // sanyo lc7883k
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)
MCFG_SOUND_ROUTE(0, "ldac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "ldac", -1.0, DAC_VREF_NEG_INPUT)
MCFG_SOUND_ROUTE(0, "rdac", 1.0, DAC_VREF_POS_INPUT) MCFG_SOUND_ROUTE(0, "rdac", -1.0, DAC_VREF_NEG_INPUT)
MACHINE_CONFIG_END
ymf262_device &ymf262(YMF262(config, "ymf262", XTAL(14'318'181)));
ymf262.add_route(0, "lspeaker", 1.00);
ymf262.add_route(1, "rspeaker", 1.00);
ymf262.add_route(2, "lspeaker", 1.00);
ymf262.add_route(3, "rspeaker", 1.00);
DAC_16BIT_R2R(config, m_ldac, 0);
DAC_16BIT_R2R(config, m_rdac, 0);
m_ldac->add_route(ALL_OUTPUTS, "lspeaker", 1.0); // sanyo lc7883k
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)
{
@ -258,11 +267,12 @@ vis_vga_device::vis_vga_device(const machine_config &mconfig, const char *tag, d
set_screen(*this, "screen");
}
MACHINE_CONFIG_START(vis_vga_device::device_add_mconfig)
MCFG_SCREEN_ADD("screen", RASTER)
MCFG_SCREEN_RAW_PARAMS(XTAL(25'174'800),900,0,640,526,0,480)
MCFG_SCREEN_UPDATE_DEVICE(DEVICE_SELF, vis_vga_device, screen_update)
MACHINE_CONFIG_END
void vis_vga_device::device_add_mconfig(machine_config &config)
{
screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
screen.set_raw(XTAL(25'174'800), 900, 0, 640, 526, 0, 480);
screen.set_screen_update(FUNC(vis_vga_device::screen_update));
}
void vis_vga_device::recompute_params()
{
@ -720,8 +730,8 @@ private:
DECLARE_WRITE16_MEMBER(pad_w);
DECLARE_READ8_MEMBER(unk1_r);
DECLARE_WRITE8_MEMBER(unk1_w);
void at16_io(address_map &map);
void at16_map(address_map &map);
void io_map(address_map &map);
void main_map(address_map &map);
void machine_reset() override;
@ -834,7 +844,7 @@ WRITE8_MEMBER(vis_state::sysctl_w)
m_sysctl = data;
}
void vis_state::at16_map(address_map &map)
void vis_state::main_map(address_map &map)
{
map.unmap_value_high();
map(0x000000, 0x09ffff).ram();
@ -844,7 +854,7 @@ void vis_state::at16_map(address_map &map)
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(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)
INPUT_PORTS_END
MACHINE_CONFIG_START(vis_state::vis)
void vis_state::vis(machine_config &config)
{
/* basic machine hardware */
MCFG_DEVICE_ADD("maincpu", I80286, XTAL(12'000'000) )
MCFG_DEVICE_PROGRAM_MAP(at16_map)
MCFG_DEVICE_IO_MAP(at16_io)
MCFG_DEVICE_IRQ_ACKNOWLEDGE_DEVICE("mb:pic8259_master", pic8259_device, inta_cb)
MCFG_80286_SHUTDOWN(WRITELINE("mb", at_mb_device, shutdown))
i80286_cpu_device &maincpu(I80286(config, "maincpu", XTAL(12'000'000)));
maincpu.set_addrmap(AS_PROGRAM, &vis_state::main_map);
maincpu.set_addrmap(AS_IO, &vis_state::io_map);
maincpu.shutdown_callback().set("mb", FUNC(at_mb_device::shutdown));
maincpu.set_irq_acknowledge_callback("mb:pic8259_master", FUNC(pic8259_device::inta_cb));
MCFG_DEVICE_ADD("mb", AT_MB, 0)
// this doesn't have a real keyboard controller
MCFG_DEVICE_REMOVE("mb:keybc")
MCFG_DEVICE_REMOVE("mb:pc_kbdc")
AT_MB(config, "mb", 0);
// the vis doesn't have a real keyboard controller
config.device_remove("mb:keybc");
config.device_remove("mb:pc_kbdc");
MCFG_DEVICE_ADD("kbdc", KBDC8042, 0)
MCFG_KBDC8042_KEYBOARD_TYPE(KBDC8042_AT386)
MCFG_KBDC8042_SYSTEM_RESET_CB(INPUTLINE("maincpu", INPUT_LINE_RESET))
MCFG_KBDC8042_GATE_A20_CB(INPUTLINE("maincpu", INPUT_LINE_A20))
MCFG_KBDC8042_INPUT_BUFFER_FULL_CB(WRITELINE("mb:pic8259_master", pic8259_device, ir1_w))
kbdc8042_device &kbdc(KBDC8042(config, "kbdc"));
kbdc.set_keyboard_type(kbdc8042_device::KBDC8042_AT386);
kbdc.system_reset_callback().set_inputline("maincpu", INPUT_LINE_RESET);
kbdc.gate_a20_callback().set_inputline("maincpu", INPUT_LINE_A20);
kbdc.input_buffer_full_callback().set("mb:pic8259_master", FUNC(pic8259_device::ir1_w));
// FIXME: determine ISA bus clock
MCFG_DEVICE_ADD("mcd", ISA16_SLOT, 0, "mb:isabus", pc_isa16_cards, "mcd", true)
MCFG_DEVICE_ADD("visaudio", ISA16_SLOT, 0, "mb:isabus", vis_cards, "visaudio", true)
MCFG_DEVICE_ADD("visvga", ISA16_SLOT, 0, "mb:isabus", vis_cards, "visvga", true)
MACHINE_CONFIG_END
ISA16_SLOT(config, "mcd", 0, "mb:isabus", pc_isa16_cards, "mcd", true);
ISA16_SLOT(config, "visaudio", 0, "mb:isabus", vis_cards, "visaudio", true);
ISA16_SLOT(config, "visvga", 0, "mb:isabus", vis_cards, "visvga", true);
}
ROM_START(vis)
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_DEVICE7, "cdrom", SCSICD, SCSI_ID_6)
MCFG_DEVICE_ADD("mb89352", MB89352A, 40_MHz_XTAL / 8)
MCFG_LEGACY_SCSI_PORT("scsi")
MCFG_MB89352A_IRQ_CB(WRITELINE(*this, x68k_state, x68k_scsi_irq))
MCFG_MB89352A_DRQ_CB(WRITELINE(*this, x68k_state, x68k_scsi_drq))
mb89352_device &scsictrl(MB89352A(config, "mb89352", 40_MHz_XTAL / 8));
scsictrl.set_scsi_port("scsi");
scsictrl.irq_cb().set(FUNC(x68k_state::x68k_scsi_irq));
scsictrl.drq_cb().set(FUNC(x68k_state::x68k_scsi_drq));
VICON(config.replace(), m_crtc, 38.86363_MHz_XTAL);
m_crtc->set_screen("screen");

View File

@ -374,7 +374,7 @@ private:
int m_centronics_busy;
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 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() ));
for ( int i = 0; i < length; i++ )