1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
// license:BSD-3-Clause
// copyright-holders:hap
/*
Mitel MD4330B / MD4332B LCD Driver
*/
#ifndef MAME_VIDEO_MD4330B_H
#define MAME_VIDEO_MD4330B_H
#pragma once
// pinout reference
/*
____ ____ ____ ____
_T/C 1 |* \_/ | 40 VDD _T/C 1 |* \_/ | 40 VDD
DI 2 | | 39 CLK DI 2 | | 39 CLK
NC 3 | | 38 RST NC 3 | | 38 RST
NC 4 | | 37 DO Q1 4 | | 37 DO
Q1 5 | | 36 Q30 Q2 5 | | 36 Q32
Q2 6 | | 35 Q29 Q3 6 | | 35 Q31
Q3 7 | | 34 Q28 Q4 7 | | 34 Q30
Q4 8 | | 33 Q27 Q5 8 | | 33 Q29
Q5 9 | | 32 Q26 Q6 9 | | 32 Q28
Q6 10 | MD4330BC | 31 Q25 Q7 10 | MD4332BC | 31 Q27
Q7 11 | MD4330BE | 30 Q24 Q8 11 | MD4332BE | 30 Q26
Q8 12 | | 29 Q23 Q9 12 | | 29 Q25
Q9 13 | | 28 Q22 Q10 13 | | 28 Q24
Q10 14 | | 27 Q21 Q11 14 | | 27 Q23
Q11 15 | | 26 Q20 Q12 15 | | 26 Q22
Q12 16 | | 25 Q19 Q13 16 | | 25 Q21
Q13 17 | | 24 Q18 Q14 17 | | 24 Q20
Q14 18 | | 23 Q17 Q15 18 | | 23 Q19
Q15 19 | | 22 Q16 Q16 19 | | 22 Q18
VSS 20 |___________| 21 NC VSS 20 |___________| 21 Q17
*/
class md4330b_device : public device_t
{
public:
md4330b_device(const machine_config &mconfig, const char *tag, device_t *owner, const XTAL &clock = XTAL());
// configuration helpers
auto write_q() { return m_write_q.bind(); }
auto write_do() { return m_write_do.bind(); }
DECLARE_WRITE_LINE_MEMBER(clk_w);
DECLARE_WRITE_LINE_MEMBER(tc_w) { m_tc = (state) ? 1 : 0; update_output(); }
DECLARE_WRITE_LINE_MEMBER(di_w) { m_di = (state) ? 1 : 0; }
DECLARE_WRITE_LINE_MEMBER(rst_w) { m_rst = (state) ? 1 : 0; }
DECLARE_READ_LINE_MEMBER(do_r) { return m_do; }
protected:
md4330b_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, const XTAL &clock, u8 qmax);
// device-level overrides
virtual void device_start() override;
void update_output();
const u8 m_qmax; // number of Q pins
u32 m_shift;
// pin state
int m_clk;
int m_di;
int m_do;
int m_rst;
int m_tc;
// callbacks
devcb_write32 m_write_q;
devcb_write_line m_write_do;
};
class md4332b_device : public md4330b_device
{
public:
md4332b_device(const machine_config &mconfig, const char *tag, device_t *owner, const XTAL &clock = XTAL());
};
DECLARE_DEVICE_TYPE(MD4330B, md4330b_device)
DECLARE_DEVICE_TYPE(MD4332B, md4332b_device)
#endif // MAME_VIDEO_MD4330B_H
|