summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/netlist/devices/nld_74153.h
blob: 16024114d4b732b59b74d6e06f216f021bb817cf (plain) (blame)
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
// license:GPL-2.0+
// copyright-holders:Couriersud
/*
 * nld_74153.h
 *
 *  DM74153: Dual 4-Line to 1-Line Data Selectors Multiplexers
 *
 *          +--------------+
 *       G1 |1     ++    16| VCC
 *        B |2           15| G2
 *      1C3 |3           14| A
 *      1C2 |4   74153   13| 2C3
 *      1C1 |5           12| 2C2
 *      1C0 |6           11| 2C1
 *       Y1 |7           10| 2C0
 *      GND |8            9| Y2
 *          +--------------+
 *
 *
 *          Function table
 *
 *          +-----+-----++----+----+----+----++----+----+
 *          |  B  |  A  || C0 | C1 | C2 | C3 ||  G |  Y |
 *          +=====+=====++====+====+====+====++====+====+
 *          |  X  |  X  ||  X |  X |  X |  X ||  H |  L |
 *          |  L  |  L  ||  L |  X |  X |  X ||  L |  L |
 *          |  L  |  L  ||  H |  X |  X |  X ||  L |  H |
 *          |  L  |  H  ||  X |  L |  X |  X ||  L |  L |
 *          |  L  |  H  ||  X |  H |  X |  X ||  L |  H |
 *          |  H  |  L  ||  X |  X |  L |  X ||  L |  L |
 *          |  H  |  L  ||  X |  X |  H |  X ||  L |  H |
 *          |  H  |  H  ||  X |  X |  X |  L ||  L |  L |
 *          |  H  |  H  ||  X |  X |  X |  H ||  L |  H |
 *          +-----+-----++----+----+----+----++----+----+
 *
 *  A, B : Select Inputs
 *  C*   : Data inputs
 *  G    : Strobe
 *  Y    : Output
 *
 *  Naming conventions follow National Semiconductor datasheet
 *
 */

#ifndef NLD_74153_H_
#define NLD_74153_H_

#include "../nl_base.h"

#define TTL_74153(_name, _C0, _C1, _C2, _C3, _A, _B, _G)                            \
		NET_REGISTER_DEV(74153, _name)                                              \
		NET_CONNECT(_name, C0, _C0)                                                 \
		NET_CONNECT(_name, C1, _C1)                                                 \
		NET_CONNECT(_name, C2, _C2)                                                 \
		NET_CONNECT(_name, C3, _C3)                                                 \
		NET_CONNECT(_name, A, _A)                                                   \
		NET_CONNECT(_name, B, _B)                                                   \
		NET_CONNECT(_name, G, _G)

#define TTL_74153_DIP(_name)                                                         \
		NET_REGISTER_DEV(74153_dip, _name)

NETLIB_SUBDEVICE(74153sub,
	netlist_logic_input_t m_C[4];
	netlist_logic_input_t m_G;

	netlist_logic_output_t m_Y;

	int m_chan;
);

NETLIB_DEVICE(74153,
public:
	NETLIB_NAME(74153sub) m_sub;
	netlist_logic_input_t m_A;
	netlist_logic_input_t m_B;
);

NETLIB_DEVICE(74153_dip,

	NETLIB_NAME(74153sub) m_1;
	NETLIB_NAME(74153sub) m_2;
	netlist_logic_input_t m_A;
	netlist_logic_input_t m_B;
);

#endif /* NLD_74153_H_ */