1 // license:BSD-3-Clause
2 // copyright-holders:David Haywood
3 
4 #ifndef MAME_MACHINE_XAVIX_IO_H
5 #define MAME_MACHINE_XAVIX_IO_H
6 
7 class xavix_io_device : public device_t
8 {
9 public:
10 	xavix_io_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
11 
read_0_callback()12 	auto read_0_callback() { return m_in0_cb.bind(); }
read_1_callback()13 	auto read_1_callback() { return m_in1_cb.bind(); }
14 
write_0_callback()15 	auto write_0_callback() { return m_out0_cb.bind(); }
write_1_callback()16 	auto write_1_callback() { return m_out1_cb.bind(); }
17 
18 	void xav_7a0x_dir_w(offs_t offset, uint8_t data);
19 	void xav_7a0x_dat_w(offs_t offset, uint8_t data);
20 
21 	uint8_t xav_7a0x_dir_r(offs_t offset);
22 	uint8_t xav_7a0x_dat_r(offs_t offset);
23 
24 protected:
25 	// device-level overrides
26 	virtual void device_start() override;
27 	virtual void device_reset() override;
28 
29 private:
30 	devcb_read8 m_in0_cb;
31 	devcb_read8 m_in1_cb;
32 
33 	devcb_write8 m_out0_cb;
34 	devcb_write8 m_out1_cb;
35 
36 	uint8_t m_dir[2];
37 	uint8_t m_dat[2];
38 };
39 
40 DECLARE_DEVICE_TYPE(XAVIXIO, xavix_io_device)
41 
42 #endif // MAME_MACHINE_XAVIX_IO_H
43