mirror of
https://github.com/holub/mame
synced 2025-04-25 17:56:43 +03:00
-fdc37c93x, fga002: Removed MCFG, nw
This commit is contained in:
parent
bee81e496a
commit
8170b92668
@ -30,22 +30,22 @@ class fdc37c93x_device : public device_t, public device_isa16_card_interface
|
||||
public:
|
||||
fdc37c93x_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
~fdc37c93x_device() {}
|
||||
static void static_set_sysopt_pin(device_t &device, int value) { dynamic_cast<fdc37c93x_device &>(device).sysopt_pin = value; }
|
||||
|
||||
// optional information overrides
|
||||
virtual void device_add_mconfig(machine_config &config) override;
|
||||
|
||||
template <class Object> devcb_base &set_gp20_reset_callback(Object &&cb) { return m_gp20_reset_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_gp25_gatea20_callback(Object &&cb) { return m_gp25_gatea20_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_irq1_callback(Object &&cb) { return m_irq1_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_irq8_callback(Object &&cb) { return m_irq8_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_irq9_callback(Object &&cb) { return m_irq9_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_txd1_callback(Object &&cb) { return m_txd1_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_ndtr1_callback(Object &&cb) {return m_ndtr1_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_nrts1_callback(Object &&cb) {return m_nrts1_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_txd2_callback(Object &&cb) { return m_txd2_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_ndtr2_callback(Object &&cb) { return m_ndtr2_callback.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_nrts2_callback(Object &&cb) { return m_nrts2_callback.set_callback(std::forward<Object>(cb)); }
|
||||
void set_sysopt_pin(int value) { sysopt_pin = value; }
|
||||
auto gp20_reset() { return m_gp20_reset_callback.bind(); }
|
||||
auto gp25_gatea20() { return m_gp25_gatea20_callback.bind(); }
|
||||
auto irq1() { return m_irq1_callback.bind(); }
|
||||
auto irq8() { return m_irq8_callback.bind(); }
|
||||
auto irq9() { return m_irq9_callback.bind(); }
|
||||
auto txd1() { return m_txd1_callback.bind(); }
|
||||
auto ndtr1() { return m_ndtr1_callback.bind(); }
|
||||
auto nrts1() { return m_nrts1_callback.bind(); }
|
||||
auto txd2() { return m_txd2_callback.bind(); }
|
||||
auto ndtr2() { return m_ndtr2_callback.bind(); }
|
||||
auto nrts2() { return m_nrts2_callback.bind(); }
|
||||
|
||||
void remap(int space_id, offs_t start, offs_t end) override;
|
||||
|
||||
@ -205,43 +205,4 @@ private:
|
||||
|
||||
DECLARE_DEVICE_TYPE(FDC37C93X, fdc37c93x_device);
|
||||
|
||||
#define MCFG_FDC37C93X_ADD(_tag) \
|
||||
MCFG_DEVICE_ADD(_tag, FDC37C93X, 0)
|
||||
|
||||
#define MCFG_FDC37C93X_SYSOPT(_pinvalue) \
|
||||
fdc37c93x_device::static_set_sysopt_pin(*device, _pinvalue);
|
||||
|
||||
#define MCFG_FDC37C93X_GP20_RESET_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_gp20_reset_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_GP25_GATEA20_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_gp25_gatea20_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_IRQ1_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_irq1_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_IRQ8_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_irq8_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_IRQ9_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_irq9_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_TXD1_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_txd1_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_NDTR1_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_ndtr1_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_NRTS1_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_nrts1_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_TXD2_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_txd2_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_NDTR2_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_ndtr2_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FDC37C93X_NRTS2_CB(_devcb) \
|
||||
downcast<fdc37c93x_device &>(*device).set_nrts2_callback(DEVCB_##_devcb);
|
||||
|
||||
#endif // MAME_MACHINE_FDC37C93X_H
|
||||
|
@ -5,30 +5,6 @@
|
||||
|
||||
#include "cpu/m68000/m68000.h" // The FGA002 is designed for the 68K interrupt PL0-PL2 signalling, however used on SPARC and x86 boards too
|
||||
|
||||
#define MCFG_FGA002_ADD(_tag, _clock) MCFG_DEVICE_ADD(_tag, FGA002, _clock)
|
||||
|
||||
// LOCAL IRQ callbacks
|
||||
#define MCFG_FGA002_OUT_INT_CB(_devcb) \
|
||||
downcast<fga002_device &>(*device).set_out_int_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FGA002_OUT_LIACK4_CB(_devcb) \
|
||||
downcast<fga002_device &>(*device).set_liack4_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FGA002_OUT_LIACK5_CB(_devcb) \
|
||||
downcast<fga002_device &>(*device).set_liack5_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FGA002_OUT_LIACK6_CB(_devcb) \
|
||||
downcast<fga002_device &>(*device).set_liack6_callback(DEVCB_##_devcb);
|
||||
|
||||
#define MCFG_FGA002_OUT_LIACK7_CB(_devcb) \
|
||||
downcast<fga002_device &>(*device).set_liack7_callback(DEVCB_##_devcb);
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> fga002_device
|
||||
|
||||
class fga002_device : public device_t
|
||||
// ,public device_z80daisy_interface
|
||||
{
|
||||
@ -53,11 +29,11 @@ class fga002_device : public device_t
|
||||
int acknowledge();
|
||||
int get_irq_level();
|
||||
|
||||
template <class Object> devcb_base &set_out_int_callback(Object &&cb) { return m_out_int_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_liack4_callback(Object &&cb) { return m_liack4_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_liack5_callback(Object &&cb) { return m_liack5_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_liack6_callback(Object &&cb) { return m_liack6_cb.set_callback(std::forward<Object>(cb)); }
|
||||
template <class Object> devcb_base &set_liack7_callback(Object &&cb) { return m_liack7_cb.set_callback(std::forward<Object>(cb)); }
|
||||
auto out_int() { return m_out_int_cb.bind(); }
|
||||
auto liack4() { return m_liack4_cb.bind(); }
|
||||
auto liack5() { return m_liack5_cb.bind(); }
|
||||
auto liack6() { return m_liack6_cb.bind(); }
|
||||
auto liack7() { return m_liack7_cb.bind(); }
|
||||
|
||||
protected:
|
||||
// type for array of mapping of FGA registers that assembles an IRQ source
|
||||
|
@ -63,12 +63,11 @@ void at586_state::sb_config(device_t *device)
|
||||
|
||||
void at586_state::superio_config(device_t *device)
|
||||
{
|
||||
devcb_base *devcb = nullptr;
|
||||
(void)devcb;
|
||||
MCFG_FDC37C93X_SYSOPT(1)
|
||||
MCFG_FDC37C93X_GP20_RESET_CB(INPUTLINE(":maincpu", INPUT_LINE_RESET))
|
||||
MCFG_FDC37C93X_GP25_GATEA20_CB(INPUTLINE(":maincpu", INPUT_LINE_A20))
|
||||
MCFG_FDC37C93X_IRQ1_CB(WRITELINE(":pcibus:7:i82371sb:pic8259_master", pic8259_device, ir1_w))
|
||||
fdc37c93x_device &fdc = *downcast<fdc37c93x_device *>(device);
|
||||
fdc.set_sysopt_pin(1);
|
||||
fdc.gp20_reset().set_inputline(":maincpu", INPUT_LINE_RESET);
|
||||
fdc.gp25_gatea20().set_inputline(":maincpu", INPUT_LINE_A20);
|
||||
fdc.irq1().set(":pcibus:7:i82371sb:pic8259_master", FUNC(pic8259_device::ir1_w));
|
||||
}
|
||||
|
||||
|
||||
|
@ -747,10 +747,10 @@ MACHINE_CONFIG_START(cpu30_state::cpu30)
|
||||
// m_pit2->timer_irq_callback().set("fga002", FUNC(fga002_device::lirq3_w)); // The timer interrupt seems to silence the terminal interrupt, needs invectigation
|
||||
|
||||
/* FGA-002, Force Gate Array */
|
||||
MCFG_FGA002_ADD("fga002", 0)
|
||||
MCFG_FGA002_OUT_INT_CB(WRITELINE(*this, cpu30_state, fga_irq_callback))
|
||||
MCFG_FGA002_OUT_LIACK4_CB(READ8("duscc", duscc_device, iack))
|
||||
MCFG_FGA002_OUT_LIACK5_CB(READ8("duscc2", duscc_device, iack))
|
||||
fga002_device &fga002(FGA002(config, m_fga002, 0));
|
||||
fga002.out_int().set(FUNC(cpu30_state::fga_irq_callback));
|
||||
fga002.liack4().set("duscc", FUNC(duscc_device::iack));
|
||||
fga002.liack5().set("duscc2", FUNC(duscc_device::iack));
|
||||
|
||||
// RTC
|
||||
MCFG_DEVICE_ADD("rtc", RTC72423, XTAL(32'768)) // Fake crystal value, the 72423 uses it own internal crystal
|
||||
|
@ -487,19 +487,18 @@ static void isa_com(device_slot_interface &device)
|
||||
|
||||
void pcipc_state::superio_config(device_t *device)
|
||||
{
|
||||
devcb_base *devcb = nullptr;
|
||||
(void)devcb;
|
||||
MCFG_FDC37C93X_SYSOPT(1)
|
||||
MCFG_FDC37C93X_GP20_RESET_CB(INPUTLINE(":maincpu", INPUT_LINE_RESET))
|
||||
MCFG_FDC37C93X_GP25_GATEA20_CB(INPUTLINE(":maincpu", INPUT_LINE_A20))
|
||||
MCFG_FDC37C93X_IRQ1_CB(WRITELINE(":pci:07.0", i82371sb_isa_device, pc_irq1_w))
|
||||
MCFG_FDC37C93X_IRQ8_CB(WRITELINE(":pci:07.0", i82371sb_isa_device, pc_irq8n_w))
|
||||
MCFG_FDC37C93X_TXD1_CB(WRITELINE(":serport0", rs232_port_device, write_txd))
|
||||
MCFG_FDC37C93X_NDTR1_CB(WRITELINE(":serport0", rs232_port_device, write_dtr))
|
||||
MCFG_FDC37C93X_NRTS1_CB(WRITELINE(":serport0", rs232_port_device, write_rts))
|
||||
MCFG_FDC37C93X_TXD2_CB(WRITELINE(":serport1", rs232_port_device, write_txd))
|
||||
MCFG_FDC37C93X_NDTR2_CB(WRITELINE(":serport1", rs232_port_device, write_dtr))
|
||||
MCFG_FDC37C93X_NRTS2_CB(WRITELINE(":serport1", rs232_port_device, write_rts))
|
||||
fdc37c93x_device &fdc = *downcast<fdc37c93x_device *>(device);
|
||||
fdc.set_sysopt_pin(1);
|
||||
fdc.gp20_reset().set_inputline(":maincpu", INPUT_LINE_RESET);
|
||||
fdc.gp25_gatea20().set_inputline(":maincpu", INPUT_LINE_RESET);
|
||||
fdc.irq1().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq1_w));
|
||||
fdc.irq8().set(":pci:07.0", FUNC(i82371sb_isa_device::pc_irq8n_w));
|
||||
fdc.txd1().set(":serport0", FUNC(rs232_port_device::write_txd));
|
||||
fdc.ndtr1().set(":serport0", FUNC(rs232_port_device::write_dtr));
|
||||
fdc.nrts1().set(":serport0", FUNC(rs232_port_device::write_rts));
|
||||
fdc.txd2().set(":serport1", FUNC(rs232_port_device::write_txd));
|
||||
fdc.ndtr2().set(":serport1", FUNC(rs232_port_device::write_dtr));
|
||||
fdc.nrts2().set(":serport1", FUNC(rs232_port_device::write_rts));
|
||||
}
|
||||
|
||||
MACHINE_CONFIG_START(pcipc_state::pcipc)
|
||||
|
Loading…
Reference in New Issue
Block a user