summaryrefslogtreecommitdiffstatshomepage
path: root/src/devices/video/sed1500.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/devices/video/sed1500.h')
-rw-r--r--src/devices/video/sed1500.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/src/devices/video/sed1500.h b/src/devices/video/sed1500.h
new file mode 100644
index 00000000000..a72e124f772
--- /dev/null
+++ b/src/devices/video/sed1500.h
@@ -0,0 +1,86 @@
+// license:BSD-3-Clause
+// copyright-holders:hap
+/*
+
+ Epson SED1500 series LCD Driver
+
+*/
+
+#ifndef MAME_VIDEO_SED1500_H
+#define MAME_VIDEO_SED1500_H
+
+#pragma once
+
+/*
+
+pinout reference (brief)
+
+OSC: oscillator (resistors or XTAL)
+A0-A6: address
+D0-D7: data (I/O)
+WR/RD: write/read signal
+CS: chip select
+SYNC: frame synchronize (I/O)
+
+CL: OSC output
+COM: LCD commons
+SEG: LCD segments
+
+*/
+
+class sed1500_device : public device_t
+{
+public:
+ sed1500_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+
+ // configuration helpers
+ auto write_segs() { return m_write_segs.bind(); } // common number in offset, segment data in data
+
+ void write(offs_t offset, u8 data);
+ u8 read(offs_t offset);
+
+protected:
+ sed1500_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, u32 clock, u8 cmax, u8 smax);
+
+ // device-level overrides
+ virtual void device_start() override;
+
+ TIMER_CALLBACK_MEMBER(update_segs);
+
+ emu_timer *m_lcd_timer;
+
+ const u8 m_cmax; // number of COL pins
+ const u8 m_smax; // number of SEG pins
+ u8 m_mode;
+ u8 m_cout;
+ u8 m_ram[0x80];
+
+ // callbacks
+ devcb_write64 m_write_segs;
+};
+
+class sed1501_device : public sed1500_device
+{
+public:
+ sed1501_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
+class sed1502_device : public sed1500_device
+{
+public:
+ sed1502_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
+class sed1503_device : public sed1500_device
+{
+public:
+ sed1503_device(const machine_config &mconfig, const char *tag, device_t *owner, u32 clock);
+};
+
+
+DECLARE_DEVICE_TYPE(SED1500, sed1500_device)
+DECLARE_DEVICE_TYPE(SED1501, sed1501_device)
+DECLARE_DEVICE_TYPE(SED1502, sed1502_device)
+DECLARE_DEVICE_TYPE(SED1503, sed1503_device)
+
+#endif // MAME_VIDEO_SED1500_H