diff options
Diffstat (limited to 'src/devices/bus/bbc/modem/scsiaiv.cpp')
| -rw-r--r-- | src/devices/bus/bbc/modem/scsiaiv.cpp | 73 |
1 files changed, 58 insertions, 15 deletions
diff --git a/src/devices/bus/bbc/modem/scsiaiv.cpp b/src/devices/bus/bbc/modem/scsiaiv.cpp index deb75196810..3a177ded96b 100644 --- a/src/devices/bus/bbc/modem/scsiaiv.cpp +++ b/src/devices/bus/bbc/modem/scsiaiv.cpp @@ -8,16 +8,60 @@ #include "emu.h" #include "scsiaiv.h" -#include "machine/nscsi_bus.h" + #include "bus/nscsi/devices.h" +#include "machine/nscsi_bus.h" +#include "machine/nscsi_cb.h" -//************************************************************************** -// DEVICE DEFINITIONS -//************************************************************************** +namespace { + +class bbc_scsiaiv_device : public device_t, public device_bbc_modem_interface +{ +public: + // construction/destruction + bbc_scsiaiv_device(const machine_config &mconfig, const char* tag, device_t* owner, uint32_t clock); + + void bsy_w(int state); + void req_w(int state); + +protected: + bbc_scsiaiv_device(const machine_config &mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock) + : device_t(mconfig, type, tag, owner, clock) + , device_bbc_modem_interface(mconfig, *this) + , m_scsi(*this, "scsi:7:scsicb") + { + } + + // device_t overrides + virtual void device_start() override ATTR_COLD; + + // optional information overrides + virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; + + virtual uint8_t read(offs_t offset) override; + virtual void write(offs_t offset, uint8_t data) override; -DEFINE_DEVICE_TYPE(BBC_SCSIAIV, bbc_scsiaiv_device, "bbc_scsiaiv", "Acorn AIV SCSI Host Adaptor"); -//DEFINE_DEVICE_TYPE(BBC_VP415, bbc_vp415_device, "bbc_vp415", "BBC Philips VP415"); +private: + required_device<nscsi_callback_device> m_scsi; + + int m_irq_enable; + int m_irq_state; +}; + + +// ======================> bbc_vp415_device + +//class bbc_vp415_device : public bbc_scsiaiv_device +//{ +//public: +// // construction/destruction +// bbc_vp415_device(const machine_config &mconfig, const char* tag, device_t* owner, uint32_t clock); +// +//protected: +// // optional information overrides +// virtual void device_add_mconfig(machine_config &config) override ATTR_COLD; +//}; //------------------------------------------------- @@ -40,7 +84,7 @@ void bbc_scsiaiv_device::device_add_mconfig(machine_config &config) //{ // bbc_scsiaiv_device::device_add_mconfig(config); // -// /* Philips VP415 */ +// // Philips VP415 // subdevice<nscsi_connector>("scsi:0")->set_default_option("vp415"); // subdevice<nscsi_connector>("scsi:0")->set_fixed(true); //} @@ -54,13 +98,6 @@ void bbc_scsiaiv_device::device_add_mconfig(machine_config &config) // bbc_scsiaiv_device - constructor //------------------------------------------------- -bbc_scsiaiv_device::bbc_scsiaiv_device(const machine_config &mconfig, device_type type, const char* tag, device_t* owner, uint32_t clock) - : device_t(mconfig, type, tag, owner, clock) - , device_bbc_modem_interface(mconfig, *this) - , m_scsi(*this, "scsi:7:scsicb") -{ -} - bbc_scsiaiv_device::bbc_scsiaiv_device(const machine_config &mconfig, const char* tag, device_t* owner, uint32_t clock) : bbc_scsiaiv_device(mconfig, BBC_SCSIAIV, tag, owner, clock) { @@ -78,7 +115,7 @@ bbc_scsiaiv_device::bbc_scsiaiv_device(const machine_config &mconfig, const char void bbc_scsiaiv_device::device_start() { - /* register for save states */ + // register for save states save_item(NAME(m_irq_enable)); save_item(NAME(m_irq_state)); } @@ -140,3 +177,9 @@ void bbc_scsiaiv_device::req_w(int state) m_irq_state = (m_irq_enable && !state) ? 0 : 1; m_slot->irq_w(m_irq_state ? CLEAR_LINE : ASSERT_LINE); } + +} // anonymous namespace + + +DEFINE_DEVICE_TYPE_PRIVATE(BBC_SCSIAIV, device_bbc_modem_interface, bbc_scsiaiv_device, "bbc_scsiaiv", "Acorn AIV SCSI Host Adaptor"); +//DEFINE_DEVICE_TYPE_PRIVATE(BBC_VP415, device_bbc_modem_interface, bbc_vp415_device, "bbc_vp415", "BBC Philips VP415"); |
