summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/bus/bbc/modem/scsiaiv.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/bus/bbc/modem/scsiaiv.cpp')
-rw-r--r--src/devices/bus/bbc/modem/scsiaiv.cpp73
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");