Previous 199869 Revisions Next

r26499 Tuesday 3rd December, 2013 at 20:01:10 UTC by Couriersud
Netlist: Documented 7493
[src/emu/netlist]netlist.mak
[src/emu/netlist/devices]net_lib.c net_lib.h nld_7493.c* nld_7493.h*

trunk/src/emu/netlist/netlist.mak
r26498r26499
2828   $(NETLISTOBJ)/devices/nld_7404.o \
2929   $(NETLISTOBJ)/devices/nld_7474.o \
3030   $(NETLISTOBJ)/devices/nld_7486.o \
31   $(NETLISTOBJ)/devices/nld_7493.o \
3132   $(NETLISTOBJ)/devices/nld_NE555.o \
3233   $(NETLISTOBJ)/devices/nld_log.o \
3334
trunk/src/emu/netlist/devices/nld_7493.c
r0r26499
1/*
2 * nld_7493.c
3 *
4 */
5
6#include "nld_7493.h"
7
8NETLIB_START(nic7493)
9{
10    register_sub(A, "A");
11    register_sub(B, "B");
12    register_sub(C, "C");
13    register_sub(D, "D");
14
15    register_subalias("CLKA", A.m_I);
16    register_subalias("CLKB", B.m_I);
17    register_input("R1",  m_R1);
18    register_input("R2",  m_R2);
19
20    register_subalias("QA", A.m_Q);
21    register_subalias("QB", B.m_Q);
22    register_subalias("QC", C.m_Q);
23    register_subalias("QD", D.m_Q);
24
25    register_link_internal(C, C.m_I, B.m_Q, netlist_input_t::STATE_INP_HL);
26    register_link_internal(D, D.m_I, C.m_Q, netlist_input_t::STATE_INP_HL);
27}
28
29NETLIB_START(nic7493ff)
30{
31    register_input("CLK", m_I, netlist_input_t::STATE_INP_HL);
32    register_output("Q", m_Q);
33}
34
35NETLIB_UPDATE(nic7493ff)
36{
37    if (m_reset == 0)
38        OUTLOGIC(m_Q, !m_Q.net().new_Q(), NLTIME_FROM_NS(18));
39}
40
41NETLIB_UPDATE(nic7493)
42{
43    netlist_sig_t r = INPLOGIC(m_R1) & INPLOGIC(m_R2);
44
45    if (r)
46    {
47        //printf("%s reset\n", name());
48        A.m_reset = B.m_reset = C.m_reset = D.m_reset = 1;
49        A.m_I.inactivate();
50        B.m_I.inactivate();
51        OUTLOGIC(A.m_Q, 0, NLTIME_FROM_NS(40));
52        OUTLOGIC(B.m_Q, 0, NLTIME_FROM_NS(40));
53        OUTLOGIC(C.m_Q, 0, NLTIME_FROM_NS(40));
54        OUTLOGIC(D.m_Q, 0, NLTIME_FROM_NS(40));
55    }
56    else
57    {
58        A.m_reset = B.m_reset = C.m_reset = D.m_reset = 0;
59        A.m_I.activate_hl();
60        B.m_I.activate_hl();
61        //printf("%s enable\n", name());
62    }
63}
Property changes on: trunk/src/emu/netlist/devices/nld_7493.c
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/netlist/devices/nld_7493.h
r0r26499
1// license:GPL-2.0+
2// copyright-holders:Couriersud
3/*
4 * nld_7493.h
5 *
6 *  DM7493: Quad 2-Input NAND Gates
7 *
8 *          +--------------+
9 *        B |1     ++    14| A
10 *      R01 |2           13| NC
11 *      R02 |3           12| QA
12 *       NC |4    7493   11| QD
13 *      VCC |5           10| GND
14 *       NC |6            9| QB
15 *       NC |7            8| QC
16 *          +--------------+
17 *
18 *          Counter Sequence
19 *
20 *          +-------++----+----+----+----+
21 *          | COUNT || QD | QC | QB | QA |
22 *          +=======++====+====+====+====+
23 *          |    0  ||  0 |  0 |  0 |  0 |
24 *          |    1  ||  0 |  0 |  0 |  1 |
25 *          |    2  ||  0 |  0 |  1 |  0 |
26 *          |    3  ||  0 |  0 |  1 |  1 |
27 *          |    4  ||  0 |  1 |  0 |  0 |
28 *          |    5  ||  0 |  1 |  0 |  1 |
29 *          |    6  ||  0 |  1 |  1 |  0 |
30 *          |    7  ||  0 |  1 |  1 |  1 |
31 *          |    8  ||  1 |  0 |  0 |  0 |
32 *          |    9  ||  1 |  0 |  0 |  1 |
33 *          |   10  ||  1 |  0 |  1 |  0 |
34 *          |   11  ||  1 |  0 |  1 |  1 |
35 *          |   12  ||  1 |  1 |  0 |  0 |
36 *          |   13  ||  1 |  1 |  0 |  1 |
37 *          |   14  ||  1 |  1 |  1 |  0 |
38 *          |   15  ||  1 |  1 |  1 |  1 |
39 *          +-------++----+----+----+----+
40 *
41 *          Reset Count Function table
42 *
43 *          +-----+-----++----+----+----+----+
44 *          | R01 | R01 || QD | QC | QB | QA |
45 *          +=====+=====++====+====+====+====+
46 *          |  1  |  1  ||  0 |  0 |  0 |  0 |
47 *          |  0  |  X  ||       COUNT       |
48 *          |  X  |  0  ||       COUNT       |
49 *          +-----+-----++----+----+----+----+
50 *
51 *  Naming conventions follow National Semiconductor datasheet
52 *
53 */
54
55#ifndef NLD_7493_H_
56#define NLD_7493_H_
57
58#include "../nl_base.h"
59
60#define TTL_7493(_name, _CLKA, _CLKB, _R1, _R2)                                     \
61        NET_REGISTER_DEV(nic7493, _name)                                            \
62        NET_CONNECT(_name, CLKA, _CLKA)                                             \
63        NET_CONNECT(_name, CLKB, _CLKB)                                             \
64        NET_CONNECT(_name, R1,  _R1)                                                \
65        NET_CONNECT(_name, R2,  _R2)
66
67NETLIB_SUBDEVICE(nic7493ff,
68    netlist_ttl_input_t m_I;
69    netlist_ttl_output_t m_Q;
70
71    UINT8 m_reset;
72);
73
74NETLIB_DEVICE(nic7493,
75    netlist_ttl_input_t m_R1;
76    netlist_ttl_input_t m_R2;
77
78    NETLIB_NAME(nic7493ff) A;
79    NETLIB_NAME(nic7493ff) B;
80    NETLIB_NAME(nic7493ff) C;
81    NETLIB_NAME(nic7493ff) D;
82);
83
84#endif /* NLD_7493_H_ */
Property changes on: trunk/src/emu/netlist/devices/nld_7493.h
Added: svn:mime-type
   + text/plain
Added: svn:eol-style
   + native
trunk/src/emu/netlist/devices/net_lib.c
r26498r26499
509509      OUTLOGIC(m_Q[i], (m_cnt >> i) & 1, delay[i]);
510510}
511511#endif
512#if !USE_OLD7493
513NETLIB_START(nic7493)
514{
515   register_sub(A, "A");
516   register_sub(B, "B");
517   register_sub(C, "C");
518   register_sub(D, "D");
519512
520   register_subalias("CLKA", A.m_I);
521   register_subalias("CLKB", B.m_I);
522   register_input("R1",  m_R1);
523   register_input("R2",  m_R2);
524
525   register_subalias("QA", A.m_Q);
526   register_subalias("QB", B.m_Q);
527   register_subalias("QC", C.m_Q);
528   register_subalias("QD", D.m_Q);
529
530   register_link_internal(C, C.m_I, B.m_Q, netlist_input_t::STATE_INP_HL);
531   register_link_internal(D, D.m_I, C.m_Q, netlist_input_t::STATE_INP_HL);
532}
533
534NETLIB_START(nic7493ff)
535{
536    register_input("CLK", m_I, netlist_input_t::STATE_INP_HL);
537    register_output("Q", m_Q);
538}
539
540NETLIB_UPDATE(nic7493ff)
541{
542   if (m_reset == 0)
543      OUTLOGIC(m_Q, !m_Q.net().new_Q(), NLTIME_FROM_NS(18));
544}
545
546NETLIB_UPDATE(nic7493)
547{
548   netlist_sig_t r = INPLOGIC(m_R1) & INPLOGIC(m_R2);
549
550   if (r)
551   {
552      //printf("%s reset\n", name());
553      A.m_reset = B.m_reset = C.m_reset = D.m_reset = 1;
554      A.m_I.inactivate();
555      B.m_I.inactivate();
556      OUTLOGIC(A.m_Q, 0, NLTIME_FROM_NS(40));
557      OUTLOGIC(B.m_Q, 0, NLTIME_FROM_NS(40));
558      OUTLOGIC(C.m_Q, 0, NLTIME_FROM_NS(40));
559      OUTLOGIC(D.m_Q, 0, NLTIME_FROM_NS(40));
560   }
561   else
562   {
563      A.m_reset = B.m_reset = C.m_reset = D.m_reset = 0;
564      A.m_I.activate_hl();
565      B.m_I.activate_hl();
566      //printf("%s enable\n", name());
567   }
568}
569#else
570
571NETLIB_START(nic7493)
572{
573   m_cnt = 0;
574
575   register_input("CLKA", m_CLK, netlist_input_t::STATE_INP_HL);
576   register_input("CLKB", m_CLKB, netlist_input_t::STATE_INP_HL);
577   register_input("R1",  m_R1);
578   register_input("R2",  m_R2);
579
580   register_output("QA", m_QA);
581   register_output("QB", m_QB);
582   register_output("QC", m_QC);
583   register_output("QD", m_QD);
584}
585
586NETLIB_UPDATE(nic7493)
587{
588   //UINT8 old_clk = m_lastclk;
589   //m_lastclk = INPLOGIC(m_clk);
590
591   //printf("%s %d %d %d %d %d %d\n", name(), m_cnt, old_clk, m_QA.Q(), m_QB.Q(), m_QC.Q(), m_QD.Q());
592   if (INPLOGIC(m_R1) & INPLOGIC(m_R2))
593   {
594      if (m_cnt > 0)
595      {
596         m_cnt = 0;
597         OUTLOGIC(m_QA, 0, NLTIME_FROM_NS(40));
598         OUTLOGIC(m_QB, 0, NLTIME_FROM_NS(40));
599         OUTLOGIC(m_QC, 0, NLTIME_FROM_NS(40));
600         OUTLOGIC(m_QD, 0, NLTIME_FROM_NS(40));
601      }
602      m_CLK.inactivate();
603   }
604   //else if (old_clk & !m_lastclk)
605   else {
606      m_CLK.activate_hl();
607      if (INP_HL(m_CLK))
608      {
609         m_cnt++;
610         m_cnt &= 0x0f;
611         update_outputs();
612      }
613   }
614}
615
616NETLIB_FUNC_VOID(nic7493, update_outputs, (void))
617{
618   if (m_cnt & 1)
619      OUTLOGIC(m_QA, 1, NLTIME_FROM_NS(16));
620   else
621   {
622      OUTLOGIC(m_QA, 0, NLTIME_FROM_NS(16));
623      switch (m_cnt)
624      {
625      case 0x00:
626         OUTLOGIC(m_QD, 0, NLTIME_FROM_NS(70));
627         OUTLOGIC(m_QC, 0, NLTIME_FROM_NS(48));
628         OUTLOGIC(m_QB, 0, NLTIME_FROM_NS(34));
629         break;
630      case 0x02:
631      case 0x06:
632      case 0x0A:
633      case 0x0E:
634         OUTLOGIC(m_QB, 1, NLTIME_FROM_NS(34));
635         break;
636      case 0x04:
637      case 0x0C:
638         OUTLOGIC(m_QC, 1, NLTIME_FROM_NS(48));
639         OUTLOGIC(m_QB, 0, NLTIME_FROM_NS(34));
640         break;
641      case 0x08:
642         OUTLOGIC(m_QD, 1, NLTIME_FROM_NS(70));
643         OUTLOGIC(m_QC, 0, NLTIME_FROM_NS(48));
644         OUTLOGIC(m_QB, 0, NLTIME_FROM_NS(34));
645         break;
646      }
647   }
648}
649#endif
650
651513NETLIB_START(nic74107Asub)
652514{
653515    register_input("CLK", m_clk, netlist_input_t::STATE_INP_HL);
trunk/src/emu/netlist/devices/net_lib.h
r26498r26499
6565#include "nld_7430.h"
6666#include "nld_7474.h"
6767#include "nld_7486.h"
68#include "nld_7493.h"
6869
6970#include "nld_NE555.h"
7071
7172#include "nld_log.h"
7273
7374// this is a bad hack
74#define USE_OLD7493 (0)
7575
7676// ----------------------------------------------------------------------------------------
7777// Special chips
r26498r26499
140140      NET_CONNECT(_name, R91, _R91)                                               \
141141      NET_CONNECT(_name, R92, _R92)
142142
143#define TTL_7493(_name, _CLKA, _CLKB, _R1, _R2)                                     \
144      NET_REGISTER_DEV(nic7493, _name)                                            \
145      NET_CONNECT(_name, CLKA, _CLKA)                                             \
146      NET_CONNECT(_name, CLKB, _CLKB)                                             \
147      NET_CONNECT(_name, R1,  _R1)                                                \
148      NET_CONNECT(_name, R2,  _R2)
149
150143#define TTL_74107A(_name, _CLK, _J, _K, _CLRQ)                                      \
151144      NET_REGISTER_DEV(nic74107A, _name)                                          \
152145      NET_CONNECT(_name, CLK, _CLK)                                               \
r26498r26499
315308};
316309
317310
318NETLIB_SUBDEVICE(nic7493ff,
319   netlist_ttl_input_t m_I;
320   netlist_ttl_output_t m_Q;
321
322   UINT8 m_reset;
323);
324
325#if !USE_OLD7493
326NETLIB_DEVICE(nic7493,
327   netlist_ttl_input_t m_R1;
328   netlist_ttl_input_t m_R2;
329
330   NETLIB_NAME(nic7493ff) A;
331   NETLIB_NAME(nic7493ff) B;
332   NETLIB_NAME(nic7493ff) C;
333   NETLIB_NAME(nic7493ff) D;
334);
335
336#else
337NETLIB_DEVICE(nic7493,
338   netlist_ttl_input_t m_CLK;
339   netlist_ttl_input_t m_CLKB; /* dummy ! */
340   netlist_ttl_input_t m_R1;
341   netlist_ttl_input_t m_R2;
342
343   netlist_ttl_output_t m_QA;
344   netlist_ttl_output_t m_QB;
345   netlist_ttl_output_t m_QC;
346   netlist_ttl_output_t m_QD;
347
348   UINT8 m_cnt;
349   ATTR_HOT void update_outputs();
350);
351#endif
352
353311NETLIB_DEVICE(nic7490,
354312   ATTR_HOT void update_outputs();
355313

Previous 199869 Revisions Next


© 1997-2024 The MAME Team