summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/netlist/devices/nld_legacy.c
blob: 554476c52c39c67610d08258284e751a3d2d65a4 (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
/*
 * nld_legacy.c
 *
 */

#include "nld_legacy.h"
#include "../nl_setup.h"

NETLIB_START(nicRSFF)
{
	register_input("S", m_S);
	register_input("R", m_R);
	register_output("Q", m_Q);
	register_output("QQ", m_QQ);
}

NETLIB_RESET(nicRSFF)
{
	m_Q.initial(0);
	m_QQ.initial(1);
}

NETLIB_UPDATE(nicRSFF)
{
	if (!INPLOGIC(m_S))
	{
		OUTLOGIC(m_Q,  1, NLTIME_FROM_NS(20));
		OUTLOGIC(m_QQ, 0, NLTIME_FROM_NS(20));
	}
	else if (!INPLOGIC(m_R))
	{
		OUTLOGIC(m_Q,  0, NLTIME_FROM_NS(20));
		OUTLOGIC(m_QQ, 1, NLTIME_FROM_NS(20));
	}
}

NETLIB_START(nicDelay)
{
	register_input("1", m_I);
	register_output("2", m_Q);

	register_param("L_TO_H", m_L_to_H, 10);
	register_param("H_TO_L", m_H_to_L, 10);

	save(NLNAME(m_last));

}

NETLIB_RESET(nicDelay)
{
	m_Q.initial(0);
}

NETLIB_UPDATE_PARAM(nicDelay)
{
}

NETLIB_UPDATE(nicDelay)
{
	if (INPLOGIC(m_I) && !m_last)
	{
		// L_to_H
		OUTLOGIC(m_Q,  1, NLTIME_FROM_NS(m_L_to_H.Value()));
	}
	else if (!INPLOGIC(m_I) && m_last)
	{
		OUTLOGIC(m_Q,  0, NLTIME_FROM_NS(m_H_to_L.Value()));
	}
	m_last = INPLOGIC(m_I);
}