summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/cpu/ns32000/slave.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/cpu/ns32000/slave.h')
-rw-r--r--src/devices/cpu/ns32000/slave.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/devices/cpu/ns32000/slave.h b/src/devices/cpu/ns32000/slave.h
new file mode 100644
index 00000000000..43ed52ecf80
--- /dev/null
+++ b/src/devices/cpu/ns32000/slave.h
@@ -0,0 +1,45 @@
+// license:BSD-3-Clause
+// copyright-holders:Patrick Mackinlay
+
+#ifndef MAME_CPU_NS32000_SLAVE_H
+#define MAME_CPU_NS32000_SLAVE_H
+
+#pragma once
+
+class ns32000_slave_interface : public device_interface
+{
+public:
+ auto out_scb() { return m_out_scb.bind(); }
+
+ ns32000_slave_interface(machine_config const &mconfig, device_t &device)
+ : device_interface(device, "ns32000_slave")
+ , m_out_scb(*this)
+ {
+ }
+
+ enum slave_status : u16
+ {
+ SLAVE_Q = 0x0001,
+ SLAVE_L = 0x0004,
+ SLAVE_F = 0x0020,
+ SLAVE_Z = 0x0040,
+ SLAVE_N = 0x0080,
+ };
+
+ virtual void state_add(device_state_interface &parent, int &index) = 0;
+ virtual void write_id(u16 data) = 0;
+ virtual void write_op(u16 data) = 0;
+ virtual u16 read_st(int *icount = nullptr) = 0;
+ virtual u16 read_op() = 0;
+
+protected:
+ // device_interface overrides
+ virtual void interface_post_start() override
+ {
+ m_out_scb.resolve_safe();
+ }
+
+ devcb_write_line m_out_scb;
+};
+
+#endif // MAME_CPU_NS32000_SLAVE_H