summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/machine/40105.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/machine/40105.h')
-rw-r--r--src/devices/machine/40105.h47
1 files changed, 32 insertions, 15 deletions
diff --git a/src/devices/machine/40105.h b/src/devices/machine/40105.h
index 67d3a58274e..7e4fe7dd370 100644
--- a/src/devices/machine/40105.h
+++ b/src/devices/machine/40105.h
@@ -2,7 +2,18 @@
// copyright-holders:Curt Coder
/**********************************************************************
- CMOS 40105 FIFO Register emulation
+ CD40105/HC40105 4-bit x 16-word FIFO Register
+
+***********************************************************************
+ ____ ____
+ /OE 1 |* \_/ | 16 Vcc
+ DIR 2 | | 15 /SO
+ SI 3 | | 14 DOR
+ D0 4 | | 13 Q0
+ D1 5 | 40105 | 12 Q1
+ D2 6 | | 11 Q2
+ D3 7 | | 10 Q3
+ GND 8 |___________| 9 MR
**********************************************************************/
@@ -20,11 +31,15 @@
// INTERFACE CONFIGURATION MACROS
///*************************************************************************
-#define MCFG_40105_ADD(_tag, _dir, _dor) \
- MCFG_DEVICE_ADD(_tag, CMOS_40105, 0) \
- downcast<cmos_40105_device *>(device)->set_dir_callback(DEVCB_##_dir); \
+#define MCFG_40105_DATA_IN_READY_CB(_dir) \
+ downcast<cmos_40105_device *>(device)->set_dir_callback(DEVCB_##_dir);
+
+#define MCFG_40105_DATA_OUT_READY_CB(_dor) \
downcast<cmos_40105_device *>(device)->set_dor_callback(DEVCB_##_dor);
+#define MCFG_40105_DATA_OUT_CB(_out) \
+ downcast<cmos_40105_device *>(device)->set_data_out_callback(DEVCB_##_out);
+
///*************************************************************************
@@ -37,13 +52,14 @@ class cmos_40105_device : public device_t
{
public:
// construction/destruction
- cmos_40105_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
+ cmos_40105_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
template<class _dir> void set_dir_callback(_dir dir) { m_write_dir.set_callback(dir); }
template<class _dor> void set_dor_callback(_dor dor) { m_write_dor.set_callback(dor); }
+ template<class _out> void set_data_out_callback(_out out) { m_write_q.set_callback(out); }
- uint8_t read();
- void write(uint8_t data);
+ u8 read();
+ void write(u8 data);
DECLARE_WRITE_LINE_MEMBER( si_w );
DECLARE_WRITE_LINE_MEMBER( so_w );
@@ -59,21 +75,22 @@ protected:
private:
devcb_write_line m_write_dir;
devcb_write_line m_write_dor;
+ devcb_write8 m_write_q;
- std::queue<uint8_t> m_fifo;
+ std::queue<u8> m_fifo;
- uint8_t m_d;
- uint8_t m_q;
+ u8 m_d;
+ u8 m_q;
- int m_dir;
- int m_dor;
- int m_si;
- int m_so;
+ bool m_dir;
+ bool m_dor;
+ bool m_si;
+ bool m_so;
};
// device type definition
-extern const device_type CMOS_40105;
+extern const device_type CD40105;