diff options
Diffstat (limited to 'src/devices/bus/newbrain')
-rw-r--r-- | src/devices/bus/newbrain/eim.cpp | 25 | ||||
-rw-r--r-- | src/devices/bus/newbrain/eim.h | 8 | ||||
-rw-r--r-- | src/devices/bus/newbrain/exp.cpp | 16 | ||||
-rw-r--r-- | src/devices/bus/newbrain/exp.h | 37 | ||||
-rw-r--r-- | src/devices/bus/newbrain/fdc.cpp | 45 | ||||
-rw-r--r-- | src/devices/bus/newbrain/fdc.h | 14 |
6 files changed, 73 insertions, 72 deletions
diff --git a/src/devices/bus/newbrain/eim.cpp b/src/devices/bus/newbrain/eim.cpp index 2bafd008eb6..3f0b7a19ee0 100644 --- a/src/devices/bus/newbrain/eim.cpp +++ b/src/devices/bus/newbrain/eim.cpp @@ -67,14 +67,15 @@ const tiny_rom_entry *newbrain_eim_device::device_rom_region() const // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(newbrain_eim_device::device_add_mconfig) +void newbrain_eim_device::device_add_mconfig(machine_config &config) +{ // devices Z80CTC(config, m_ctc, XTAL(16'000'000)/8); m_ctc->zc_callback<0>().set(m_acia, FUNC(acia6850_device::write_rxc)); m_ctc->zc_callback<1>().set(m_acia, FUNC(acia6850_device::write_txc)); m_ctc->zc_callback<2>().set(FUNC(newbrain_eim_device::ctc_z2_w)); - MCFG_TIMER_DRIVER_ADD_PERIODIC("z80ctc_c2", newbrain_eim_device, ctc_c2_tick, attotime::from_hz(XTAL(16'000'000)/4/13)) + TIMER(config, "z80ctc_c2").configure_periodic(FUNC(newbrain_eim_device::ctc_c2_tick), attotime::from_hz(XTAL(16'000'000)/4/13)); adc0809_device &adc(ADC0809(config, ADC0809_TAG, 500000)); adc.eoc_callback().set(FUNC(newbrain_eim_device::adc_eoc_w)); @@ -92,11 +93,11 @@ MACHINE_CONFIG_START(newbrain_eim_device::device_add_mconfig) RS232_PORT(config, RS232_TAG, default_rs232_devices, nullptr); - MCFG_NEWBRAIN_EXPANSION_SLOT_ADD(NEWBRAIN_EXPANSION_SLOT_TAG, XTAL(16'000'000)/8, newbrain_expansion_cards, "fdc") + NEWBRAIN_EXPANSION_SLOT(config, m_exp, XTAL(16'000'000)/8, newbrain_expansion_cards, "fdc"); // internal ram RAM(config, RAM_TAG).set_default_size("96K"); -MACHINE_CONFIG_END +} //************************************************************************** @@ -144,9 +145,9 @@ void newbrain_eim_device::device_reset() // mreq_r - memory request read //------------------------------------------------- -uint8_t newbrain_eim_device::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) +uint8_t newbrain_eim_device::mreq_r(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { - return m_exp->mreq_r(space, offset, data, romov, exrm, raminh); + return m_exp->mreq_r(offset, data, romov, exrm, raminh); } @@ -154,9 +155,9 @@ uint8_t newbrain_eim_device::mreq_r(address_space &space, offs_t offset, uint8_t // mreq_w - memory request write //------------------------------------------------- -void newbrain_eim_device::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) +void newbrain_eim_device::mreq_w(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { - m_exp->mreq_w(space, offset, data, romov, exrm, raminh); + m_exp->mreq_w(offset, data, romov, exrm, raminh); } @@ -164,9 +165,9 @@ void newbrain_eim_device::mreq_w(address_space &space, offs_t offset, uint8_t da // iorq_r - I/O request read //------------------------------------------------- -uint8_t newbrain_eim_device::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov) +uint8_t newbrain_eim_device::iorq_r(offs_t offset, uint8_t data, bool &prtov) { - return m_exp->iorq_r(space, offset, data, prtov); + return m_exp->iorq_r(offset, data, prtov); } @@ -174,9 +175,9 @@ uint8_t newbrain_eim_device::iorq_r(address_space &space, offs_t offset, uint8_t // iorq_w - I/O request write //------------------------------------------------- -void newbrain_eim_device::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov) +void newbrain_eim_device::iorq_w(offs_t offset, uint8_t data, bool &prtov) { - m_exp->iorq_w(space, offset, data, prtov); + m_exp->iorq_w(offset, data, prtov); } diff --git a/src/devices/bus/newbrain/eim.h b/src/devices/bus/newbrain/eim.h index 3e83b22112e..19b456338fd 100644 --- a/src/devices/bus/newbrain/eim.h +++ b/src/devices/bus/newbrain/eim.h @@ -48,10 +48,10 @@ protected: virtual void device_add_mconfig(machine_config &config) override; // device_newbrain_expansion_slot_interface overrides - virtual uint8_t mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) override; - virtual void mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) override; - virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov) override; - virtual void iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov) override; + virtual uint8_t mreq_r(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) override; + virtual void mreq_w(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) override; + virtual uint8_t iorq_r(offs_t offset, uint8_t data, bool &prtov) override; + virtual void iorq_w(offs_t offset, uint8_t data, bool &prtov) override; private: DECLARE_WRITE_LINE_MEMBER( acia_interrupt ); diff --git a/src/devices/bus/newbrain/exp.cpp b/src/devices/bus/newbrain/exp.cpp index b4675c3b89f..a1a9e2210ed 100644 --- a/src/devices/bus/newbrain/exp.cpp +++ b/src/devices/bus/newbrain/exp.cpp @@ -77,11 +77,11 @@ void newbrain_expansion_slot_device::device_reset() // mreq_r - memory request read //------------------------------------------------- -uint8_t newbrain_expansion_slot_device::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) +uint8_t newbrain_expansion_slot_device::mreq_r(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { if (m_card != nullptr) { - data = m_card->mreq_r(space, offset, data, romov, exrm, raminh); + data = m_card->mreq_r(offset, data, romov, exrm, raminh); } return data; @@ -92,11 +92,11 @@ uint8_t newbrain_expansion_slot_device::mreq_r(address_space &space, offs_t offs // mreq_w - memory request write //------------------------------------------------- -void newbrain_expansion_slot_device::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) +void newbrain_expansion_slot_device::mreq_w(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { if (m_card != nullptr) { - m_card->mreq_w(space, offset, data, romov, exrm, raminh); + m_card->mreq_w(offset, data, romov, exrm, raminh); } } @@ -105,11 +105,11 @@ void newbrain_expansion_slot_device::mreq_w(address_space &space, offs_t offset, // iorq_r - I/O request read //------------------------------------------------- -uint8_t newbrain_expansion_slot_device::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov) +uint8_t newbrain_expansion_slot_device::iorq_r(offs_t offset, uint8_t data, bool &prtov) { if (m_card != nullptr) { - data = m_card->iorq_r(space, offset, data, prtov); + data = m_card->iorq_r(offset, data, prtov); } return data; @@ -120,11 +120,11 @@ uint8_t newbrain_expansion_slot_device::iorq_r(address_space &space, offs_t offs // iorq_w - I/O request write //------------------------------------------------- -void newbrain_expansion_slot_device::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov) +void newbrain_expansion_slot_device::iorq_w(offs_t offset, uint8_t data, bool &prtov) { if (m_card != nullptr) { - m_card->iorq_w(space, offset, data, prtov); + m_card->iorq_w(offset, data, prtov); } } diff --git a/src/devices/bus/newbrain/exp.h b/src/devices/bus/newbrain/exp.h index e3ab89a35ef..e9e56c1bd66 100644 --- a/src/devices/bus/newbrain/exp.h +++ b/src/devices/bus/newbrain/exp.h @@ -49,17 +49,6 @@ #define NEWBRAIN_EXPANSION_SLOT_TAG "exp" - -//************************************************************************** -// INTERFACE CONFIGURATION MACROS -//************************************************************************** - -#define MCFG_NEWBRAIN_EXPANSION_SLOT_ADD(_tag, _clock, _slot_intf, _def_slot) \ - MCFG_DEVICE_ADD(_tag, NEWBRAIN_EXPANSION_SLOT, _clock) \ - MCFG_DEVICE_SLOT_INTERFACE(_slot_intf, _def_slot, false) - - - //************************************************************************** // TYPE DEFINITIONS //************************************************************************** @@ -73,14 +62,24 @@ class newbrain_expansion_slot_device : public device_t, { public: // construction/destruction + template <typename T> + newbrain_expansion_slot_device(machine_config const &mconfig, char const *tag, device_t *owner, uint32_t clock, T &&opts, char const *dflt) + : newbrain_expansion_slot_device(mconfig, tag, owner, clock) + { + option_reset(); + opts(*this); + set_default_option(dflt); + set_fixed(false); + } + newbrain_expansion_slot_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); // computer interface - uint8_t mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh); - void mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh); + uint8_t mreq_r(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh); + void mreq_w(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh); - uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov); - void iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov); + uint8_t iorq_r(offs_t offset, uint8_t data, bool &prtov); + void iorq_w(offs_t offset, uint8_t data, bool &prtov); protected: // device-level overrides @@ -98,12 +97,12 @@ class device_newbrain_expansion_slot_interface : public device_slot_card_interfa { public: // memory access - virtual uint8_t mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { return data; } - virtual void mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { } + virtual uint8_t mreq_r(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { return data; } + virtual void mreq_w(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { } // I/O access - virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov) { return data; } - virtual void iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov) { } + virtual uint8_t iorq_r(offs_t offset, uint8_t data, bool &prtov) { return data; } + virtual void iorq_w(offs_t offset, uint8_t data, bool &prtov) { } protected: // construction/destruction diff --git a/src/devices/bus/newbrain/fdc.cpp b/src/devices/bus/newbrain/fdc.cpp index 597def0509b..7cadbd0bddd 100644 --- a/src/devices/bus/newbrain/fdc.cpp +++ b/src/devices/bus/newbrain/fdc.cpp @@ -104,21 +104,22 @@ static void newbrain_floppies(device_slot_interface &device) // device_add_mconfig - add device configuration //------------------------------------------------- -MACHINE_CONFIG_START(newbrain_fdc_device::device_add_mconfig) - MCFG_DEVICE_ADD(Z80_TAG, Z80, XTAL(4'000'000)) - MCFG_DEVICE_PROGRAM_MAP(newbrain_fdc_mem) - MCFG_DEVICE_IO_MAP(newbrain_fdc_io) +void newbrain_fdc_device::device_add_mconfig(machine_config &config) +{ + Z80(config, m_maincpu, XTAL(4'000'000)); + m_maincpu->set_addrmap(AS_PROGRAM, &newbrain_fdc_device::newbrain_fdc_mem); + m_maincpu->set_addrmap(AS_IO, &newbrain_fdc_device::newbrain_fdc_io); UPD765A(config, m_fdc, 8'000'000, false, true); m_fdc->intrq_wr_callback().set(FUNC(newbrain_fdc_device::fdc_int_w)); - MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":0", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":1", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":2", newbrain_floppies, nullptr, floppy_image_device::default_floppy_formats) - MCFG_FLOPPY_DRIVE_ADD(UPD765_TAG ":3", newbrain_floppies, nullptr, floppy_image_device::default_floppy_formats) + FLOPPY_CONNECTOR(config, UPD765_TAG ":0", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats); + FLOPPY_CONNECTOR(config, UPD765_TAG ":1", newbrain_floppies, "525dd", floppy_image_device::default_floppy_formats); + FLOPPY_CONNECTOR(config, UPD765_TAG ":2", newbrain_floppies, nullptr, floppy_image_device::default_floppy_formats); + FLOPPY_CONNECTOR(config, UPD765_TAG ":3", newbrain_floppies, nullptr, floppy_image_device::default_floppy_formats); - MCFG_NEWBRAIN_EXPANSION_SLOT_ADD(NEWBRAIN_EXPANSION_SLOT_TAG, XTAL(16'000'000)/8, newbrain_expansion_cards, nullptr) -MACHINE_CONFIG_END + NEWBRAIN_EXPANSION_SLOT(config, m_exp, XTAL(16'000'000)/8, newbrain_expansion_cards, nullptr); +} //************************************************************************** @@ -176,9 +177,9 @@ void newbrain_fdc_device::device_reset() // mreq_r - memory request read //------------------------------------------------- -uint8_t newbrain_fdc_device::mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) +uint8_t newbrain_fdc_device::mreq_r(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { - return m_exp->mreq_r(space, offset, data, romov, exrm, raminh); + return m_exp->mreq_r(offset, data, romov, exrm, raminh); } @@ -186,9 +187,9 @@ uint8_t newbrain_fdc_device::mreq_r(address_space &space, offs_t offset, uint8_t // mreq_w - memory request write //------------------------------------------------- -void newbrain_fdc_device::mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) +void newbrain_fdc_device::mreq_w(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) { - m_exp->mreq_w(space, offset, data, romov, exrm, raminh); + m_exp->mreq_w(offset, data, romov, exrm, raminh); } @@ -196,9 +197,9 @@ void newbrain_fdc_device::mreq_w(address_space &space, offs_t offset, uint8_t da // iorq_r - I/O request read //------------------------------------------------- -uint8_t newbrain_fdc_device::iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov) +uint8_t newbrain_fdc_device::iorq_r(offs_t offset, uint8_t data, bool &prtov) { - return m_exp->iorq_r(space, offset, data, prtov); + return m_exp->iorq_r(offset, data, prtov); } @@ -206,13 +207,13 @@ uint8_t newbrain_fdc_device::iorq_r(address_space &space, offs_t offset, uint8_t // iorq_w - I/O request write //------------------------------------------------- -void newbrain_fdc_device::iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov) +void newbrain_fdc_device::iorq_w(offs_t offset, uint8_t data, bool &prtov) { - m_exp->iorq_w(space, offset, data, prtov); + m_exp->iorq_w(offset, data, prtov); if ((offset & 0x20f) == 0x20f) { - io_dec_w(space, 0, data); + io_dec_w(data); } } @@ -244,7 +245,7 @@ WRITE_LINE_MEMBER( newbrain_fdc_device::fdc_int_w ) // fdc_auxiliary_w - //------------------------------------------------- -WRITE8_MEMBER( newbrain_fdc_device::fdc_auxiliary_w ) +void newbrain_fdc_device::fdc_auxiliary_w(uint8_t data) { /* @@ -278,7 +279,7 @@ WRITE8_MEMBER( newbrain_fdc_device::fdc_auxiliary_w ) // fdc_control_r - //------------------------------------------------- -READ8_MEMBER( newbrain_fdc_device::fdc_control_r ) +uint8_t newbrain_fdc_device::fdc_control_r() { /* @@ -303,7 +304,7 @@ READ8_MEMBER( newbrain_fdc_device::fdc_control_r ) // io_dec_w - 0x20f //------------------------------------------------- -WRITE8_MEMBER( newbrain_fdc_device::io_dec_w ) +void newbrain_fdc_device::io_dec_w(uint8_t data) { /* diff --git a/src/devices/bus/newbrain/fdc.h b/src/devices/bus/newbrain/fdc.h index e5a40ae0748..e5d6665a078 100644 --- a/src/devices/bus/newbrain/fdc.h +++ b/src/devices/bus/newbrain/fdc.h @@ -40,17 +40,17 @@ protected: virtual void device_add_mconfig(machine_config &config) override; // device_newbrain_expansion_slot_interface overrides - virtual uint8_t mreq_r(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) override; - virtual void mreq_w(address_space &space, offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) override; - virtual uint8_t iorq_r(address_space &space, offs_t offset, uint8_t data, bool &prtov) override; - virtual void iorq_w(address_space &space, offs_t offset, uint8_t data, bool &prtov) override; + virtual uint8_t mreq_r(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) override; + virtual void mreq_w(offs_t offset, uint8_t data, bool &romov, int &exrm, bool &raminh) override; + virtual uint8_t iorq_r(offs_t offset, uint8_t data, bool &prtov) override; + virtual void iorq_w(offs_t offset, uint8_t data, bool &prtov) override; private: DECLARE_WRITE_LINE_MEMBER( fdc_int_w ); - DECLARE_WRITE8_MEMBER( fdc_auxiliary_w ); - DECLARE_READ8_MEMBER( fdc_control_r ); - DECLARE_WRITE8_MEMBER( io_dec_w ); + void fdc_auxiliary_w(uint8_t data); + uint8_t fdc_control_r(); + void io_dec_w(uint8_t data); void newbrain_fdc_io(address_map &map); void newbrain_fdc_mem(address_map &map); |