<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.iac.isu.edu/index.php?action=history&amp;feed=atom&amp;title=Caen775Lib.c_Code</id>
	<title>Caen775Lib.c Code - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.iac.isu.edu/index.php?action=history&amp;feed=atom&amp;title=Caen775Lib.c_Code"/>
	<link rel="alternate" type="text/html" href="https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;action=history"/>
	<updated>2026-05-09T23:22:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.2</generator>
	<entry>
		<id>https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;diff=38734&amp;oldid=prev</id>
		<title>Oborn at 18:32, 16 January 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;diff=38734&amp;oldid=prev"/>
		<updated>2009-01-16T18:32:37Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;amp;diff=38734&amp;amp;oldid=38733&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Oborn</name></author>
	</entry>
	<entry>
		<id>https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;diff=38733&amp;oldid=prev</id>
		<title>Oborn at 18:30, 16 January 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;diff=38733&amp;oldid=prev"/>
		<updated>2009-01-16T18:30:14Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:30, 16 January 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1098&quot; &gt;Line 1,098:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,098:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[CAEN_V792_ADC &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;go back&lt;/del&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[CAEN_V792_ADC ]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Oborn</name></author>
	</entry>
	<entry>
		<id>https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;diff=38732&amp;oldid=prev</id>
		<title>Oborn at 18:29, 16 January 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;diff=38732&amp;oldid=prev"/>
		<updated>2009-01-16T18:29:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 18:29, 16 January 2009&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1096&quot; &gt;Line 1,096:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1,096:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   c775EventCount[id] =  0;&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;   c775EventCount[id] =  0;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[CAEN_V792_ADC go back]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Oborn</name></author>
	</entry>
	<entry>
		<id>https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;diff=38731&amp;oldid=prev</id>
		<title>Oborn: New page: /****************************************************************************** * *  caen775Lib.c  -  Driver library for readout of C.A.E.N. Model 775 TDC *                   using a VxWor...</title>
		<link rel="alternate" type="text/html" href="https://wiki.iac.isu.edu/index.php?title=Caen775Lib.c_Code&amp;diff=38731&amp;oldid=prev"/>
		<updated>2009-01-16T18:29:10Z</updated>

		<summary type="html">&lt;p&gt;New page: /****************************************************************************** * *  caen775Lib.c  -  Driver library for readout of C.A.E.N. Model 775 TDC *                   using a VxWor...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
*  caen775Lib.c  -  Driver library for readout of C.A.E.N. Model 775 TDC&lt;br /&gt;
*                   using a VxWorks 5.2 or later based Single Board computer. &lt;br /&gt;
*&lt;br /&gt;
*  Author: David Abbott &lt;br /&gt;
*          Jefferson Lab Data Acquisition Group&lt;br /&gt;
*          March 2002&lt;br /&gt;
*&lt;br /&gt;
*  Revision  1.0 - Initial Revision&lt;br /&gt;
*                    - Supports up to 20 CAEN Model 775s in a Crate&lt;br /&gt;
*                    - Programmed I/O reads&lt;br /&gt;
*                    - Interrupts from a Single 775&lt;br /&gt;
*&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;vxWorks.h&amp;quot;&lt;br /&gt;
#include &amp;quot;stdio.h&amp;quot;&lt;br /&gt;
#include &amp;quot;string.h&amp;quot;&lt;br /&gt;
#include &amp;quot;logLib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;taskLib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;intLib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;iv.h&amp;quot;&lt;br /&gt;
#include &amp;quot;semLib.h&amp;quot;&lt;br /&gt;
#include &amp;quot;vxLib.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/* Include TDC definitions */&lt;br /&gt;
#include &amp;quot;c775Lib.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
/* Include DMA Library definintions */&lt;br /&gt;
#ifdef VXWORKSPPC&lt;br /&gt;
#include &amp;quot;universeDma.h&amp;quot;&lt;br /&gt;
#else&lt;br /&gt;
#include &amp;quot;mvme_dma.c&amp;quot;&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
/* Define external Functions */&lt;br /&gt;
IMPORT  STATUS sysBusToLocalAdrs(int, char *, char **);&lt;br /&gt;
IMPORT  STATUS intDisconnect(int);&lt;br /&gt;
IMPORT  STATUS sysIntEnable(int);&lt;br /&gt;
IMPORT  STATUS sysIntDisable(int);&lt;br /&gt;
&lt;br /&gt;
/* Define Interrupts variables */&lt;br /&gt;
BOOL              c775IntRunning  = FALSE;                    /* running flag */&lt;br /&gt;
int               c775IntID       = -1;                       /* id number of TD&lt;br /&gt;
C generating interrupts */&lt;br /&gt;
LOCAL VOIDFUNCPTR c775IntRoutine  = NULL;                     /* user interrupt &lt;br /&gt;
service routine */&lt;br /&gt;
LOCAL int         c775IntArg      = 0;                        /* arg to user rou&lt;br /&gt;
tine */&lt;br /&gt;
LOCAL int         c775IntEvCount  = 0;                        /* Number of Event&lt;br /&gt;
s to generate Interrupt */&lt;br /&gt;
LOCAL UINT32      c775IntLevel    = C775_VME_INT_LEVEL;       /* default VME int&lt;br /&gt;
errupt level */&lt;br /&gt;
LOCAL UINT32      c775IntVec      = C775_INT_VEC;             /* default interru&lt;br /&gt;
pt Vector */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/* Define global variables */&lt;br /&gt;
int Nc775 = 0;                                /* Number of TDCs in Crate */&lt;br /&gt;
volatile struct c775_struct *c775p[20];       /* pointers to TDC memory map */&lt;br /&gt;
volatile struct c775_struct *c775pl[20];      /* Support for 68K second memory m&lt;br /&gt;
ap A24/D32 */&lt;br /&gt;
int c775IntCount = 0;                         /* Count of interrupts from TDC */&lt;br /&gt;
int c775EventCount[20];                       /* Count of Events taken by TDC (E&lt;br /&gt;
vent Count Register value) */&lt;br /&gt;
int c775EvtReadCnt[20];                       /* Count of events read from speci&lt;br /&gt;
fied TDC */&lt;br /&gt;
SEM_ID c775Sem;                               /* Semephore for Task syncronizati&lt;br /&gt;
on */&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775Init - Initialize c775 Library. &lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: OK, or ERROR if the address is invalid or board is not present.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
STATUS &lt;br /&gt;
c775Init (UINT32 addr, UINT32 addr_inc, int nadc, UINT16 crateID)&lt;br /&gt;
{&lt;br /&gt;
  int ii, res, rdata, errFlag = 0;&lt;br /&gt;
  int boardID = 0;&lt;br /&gt;
  unsigned long laddr, lladdr;&lt;br /&gt;
  volatile struct c775_ROM_struct *rp;&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  /* Check for valid address */&lt;br /&gt;
  if(addr==0) {&lt;br /&gt;
    printf(&amp;quot;c775Init: ERROR: Must specify a Bus (VME-based A32/A24) address for &lt;br /&gt;
TDC 0\n&amp;quot;);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }else if(addr &amp;lt; 0x00ffffff) { /* A24 Addressing */&lt;br /&gt;
    if((addr_inc==0)||(nadc==0))&lt;br /&gt;
      nadc = 1; /* assume only one TDC to initialize */&lt;br /&gt;
&lt;br /&gt;
    /* get the TDCs address */&lt;br /&gt;
    res = sysBusToLocalAdrs(0x39,(char *)addr,(char **)&amp;amp;laddr);&lt;br /&gt;
    if (res != 0) {&lt;br /&gt;
      printf(&amp;quot;c775Init: ERROR in sysBusToLocalAdrs(0x39,0x%x,&amp;amp;laddr) \n&amp;quot;,addr);&lt;br /&gt;
      return(ERROR);&lt;br /&gt;
    }&lt;br /&gt;
  }else{ /* A32 Addressing */&lt;br /&gt;
&lt;br /&gt;
#ifdef VXWORKS68K51&lt;br /&gt;
    printf(&amp;quot;c775Init: ERROR: 68K Based CPU cannot support A32 addressing (use A2&lt;br /&gt;
4)\n&amp;quot;);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
    if((addr_inc==0)||(nadc==0))&lt;br /&gt;
      nadc = 1; /* assume only one TDC to initialize */&lt;br /&gt;
&lt;br /&gt;
    /* get the TDC address */&lt;br /&gt;
    res = sysBusToLocalAdrs(0x09,(char *)addr,(char **)&amp;amp;laddr);&lt;br /&gt;
    if (res != 0) {&lt;br /&gt;
      printf(&amp;quot;c775Init: ERROR in sysBusToLocalAdrs(0x09,0x%x,&amp;amp;laddr) \n&amp;quot;,addr);&lt;br /&gt;
      return(ERROR);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
   /* Put in Hack for 68K seperate address spaces for A24/D16 and A24/D32 */&lt;br /&gt;
   /* for PowerPC they are one and the same */&lt;br /&gt;
#ifdef VXWORKS68K51&lt;br /&gt;
  lladdr = C775_68K_A24D32_OFFSET + (laddr&amp;amp;0x00ffffff);&lt;br /&gt;
#else&lt;br /&gt;
  lladdr = laddr;&lt;br /&gt;
#endif&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
  Nc775 = 0;&lt;br /&gt;
  for (ii=0;ii&amp;lt;nadc;ii++) {&lt;br /&gt;
    c775p[ii] = (struct c775_struct *)(laddr + ii*addr_inc);&lt;br /&gt;
    c775pl[ii] = (struct c775_struct *)(lladdr + ii*addr_inc);&lt;br /&gt;
    /* Check if Board exists at that address */&lt;br /&gt;
    res = vxMemProbe((char *) &amp;amp;(c775p[ii]-&amp;gt;rev),0,2,(char *)&amp;amp;rdata);&lt;br /&gt;
    if(res &amp;lt; 0) {&lt;br /&gt;
      printf(&amp;quot;c775Init: ERROR: No addressable board at addr=0x%x\n&amp;quot;,(UINT32) c77&lt;br /&gt;
5p[ii]);&lt;br /&gt;
      c775p[ii] = NULL;&lt;br /&gt;
      errFlag = 1;&lt;br /&gt;
      break;&lt;br /&gt;
    } else {&lt;br /&gt;
      /* Check if this is a Model 775 */&lt;br /&gt;
      rp = (struct c775_ROM_struct *)((UINT32)c775p[ii] + C775_ROM_OFFSET);&lt;br /&gt;
      boardID = (((rp-&amp;gt;ID_3)&amp;amp;(0xff))&amp;lt;&amp;lt;16) + (((rp-&amp;gt;ID_2)&amp;amp;(0xff))&amp;lt;&amp;lt;8) + ((rp-&amp;gt;ID_&lt;br /&gt;
1)&amp;amp;(0xff)); &lt;br /&gt;
      if((boardID != C775_BOARD_ID)&amp;amp;&amp;amp;(boardID != C775_BOARD_ID)) {&lt;br /&gt;
        printf(&amp;quot;c775Init: ERROR: Board ID does not match: %d \n&amp;quot;,boardID);&lt;br /&gt;
        return(ERROR);&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    Nc775++;&lt;br /&gt;
    printf(&amp;quot;Initialized TDC ID %d at address 0x%08x \n&amp;quot;,ii,(UINT32) c775p[ii]);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Initialize/Create Semephore */&lt;br /&gt;
  if(c775Sem != 0) {&lt;br /&gt;
    semFlush(c775Sem);&lt;br /&gt;
    semDelete(c775Sem);&lt;br /&gt;
  }&lt;br /&gt;
  c775Sem = semBCreate(SEM_Q_PRIORITY,SEM_EMPTY);&lt;br /&gt;
  if(c775Sem &amp;lt;= 0) {&lt;br /&gt;
    printf(&amp;quot;c775Init: ERROR: Unable to create Binary Semephore\n&amp;quot;);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /* Disable/Clear all TDCs */&lt;br /&gt;
  for(ii=0;ii&amp;lt;Nc775;ii++) {&lt;br /&gt;
    C775_EXEC_SOFT_RESET(ii);&lt;br /&gt;
    C775_EXEC_DATA_RESET(ii);&lt;br /&gt;
    c775p[ii]-&amp;gt;intLevel = 0;        /* Disable Interrupts */&lt;br /&gt;
    c775p[ii]-&amp;gt;evTrigger = 0;       /* Zero interrupt trigger count */&lt;br /&gt;
    c775p[ii]-&amp;gt;crateSelect = crateID;  /* Set Crate ID Register */&lt;br /&gt;
    c775p[ii]-&amp;gt;bitClear2 = C775_INCR_ALL_TRIG; /* Increment event count only on&lt;br /&gt;
                                                 accepted gates */&lt;br /&gt;
&lt;br /&gt;
    c775EventCount[ii] =  0;          /* Initialize the Event Count */&lt;br /&gt;
    c775EvtReadCnt[ii] = -1;          /* Initialize the Read Count */&lt;br /&gt;
&lt;br /&gt;
    c775SetFSR(ii,C775_MIN_FSR);  /* Set Full Scale Range for TDC */&lt;br /&gt;
&lt;br /&gt;
   c775Sparse(ii,0,0);           /* Disable Overflow/Underflow suppression */&lt;br /&gt;
  }&lt;br /&gt;
  /* Initialize Interrupt variables */&lt;br /&gt;
  c775IntID = -1;&lt;br /&gt;
  c775IntRunning = FALSE;&lt;br /&gt;
  c775IntLevel = 0;&lt;br /&gt;
  c775IntVec = 0;&lt;br /&gt;
  c775IntRoutine = NULL;&lt;br /&gt;
  c775IntArg = 0;&lt;br /&gt;
  c775IntEvCount = 0;&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
  if(errFlag &amp;gt; 0) {&lt;br /&gt;
    printf(&amp;quot;c775Init: ERROR: Unable to initialize all TDC Modules\n&amp;quot;);&lt;br /&gt;
    if(Nc775 &amp;gt; 0)&lt;br /&gt;
      printf(&amp;quot;c7752Init: %d TDC(s) successfully initialized\n&amp;quot;,Nc775);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  } else {&lt;br /&gt;
    return(OK);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775Status - Gives Status info on specified TDC&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: None&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775Status( int id, int reg, int sflag)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  int DRdy=0, BufFull=0;&lt;br /&gt;
  UINT16 stat1, stat2, bit1, bit2, cntl1;&lt;br /&gt;
  UINT16 iLvl, iVec, evTrig;&lt;br /&gt;
  UINT16 fsr;    &lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    printf(&amp;quot;c775Status: ERROR : TDC id %d not initialized \n&amp;quot;,id);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  /* read various registers */&lt;br /&gt;
&lt;br /&gt;
  stat1 = (c775p[id]-&amp;gt;status1)&amp;amp;C775_STATUS1_MASK;&lt;br /&gt;
  stat2 = (c775p[id]-&amp;gt;status2)&amp;amp;C775_STATUS2_MASK;&lt;br /&gt;
  bit1 =  (c775p[id]-&amp;gt;bitSet1)&amp;amp;C775_BITSET1_MASK;&lt;br /&gt;
  bit2 =  (c775p[id]-&amp;gt;bitSet2)&amp;amp;C775_BITSET2_MASK;&lt;br /&gt;
  cntl1 = (c775p[id]-&amp;gt;control1)&amp;amp;C775_CONTROL1_MASK;&lt;br /&gt;
  fsr =   4*(290 - ((c775p[id]-&amp;gt;iped)&amp;amp;C775_FSR_MASK));&lt;br /&gt;
  C775_EXEC_READ_EVENT_COUNT(id);&lt;br /&gt;
  if(stat1&amp;amp;C775_DATA_READY) DRdy = 1;&lt;br /&gt;
  if(stat2&amp;amp;C775_BUFFER_FULL) BufFull = 1;&lt;br /&gt;
  &lt;br /&gt;
  iLvl = (c775p[id]-&amp;gt;intLevel)&amp;amp;C775_INTLEVEL_MASK;&lt;br /&gt;
  iVec = (c775p[id]-&amp;gt;intVector)&amp;amp;C775_INTVECTOR_MASK;&lt;br /&gt;
  evTrig = (c775p[id]-&amp;gt;evTrigger)&amp;amp;C775_EVTRIGGER_MASK;&lt;br /&gt;
&lt;br /&gt;
  /* print out status info */&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;STATUS for TDC id %d at base address 0x%x \n&amp;quot;,id,(UINT32) c775p[id]);&lt;br /&gt;
  printf(&amp;quot;---------------------------------------------- \n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  if( (iLvl&amp;gt;0) &amp;amp;&amp;amp; (evTrig&amp;gt;0)) {&lt;br /&gt;
    printf(&amp;quot; Interrupts Enabled - Every %d events\n&amp;quot;,evTrig);&lt;br /&gt;
    printf(&amp;quot; VME Interrupt Level: %d   Vector: 0x%x \n&amp;quot;,iLvl,iVec);&lt;br /&gt;
    printf(&amp;quot; Interrupt Count    : %d \n&amp;quot;,c775IntCount);&lt;br /&gt;
  } else {&lt;br /&gt;
    printf(&amp;quot; Interrupts Disabled\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot; Last Interrupt Count    : %d \n&amp;quot;,c775IntCount);&lt;br /&gt;
  }&lt;br /&gt;
  printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  printf(&amp;quot;             --1--  --2--\n&amp;quot;);&lt;br /&gt;
  if(BufFull &amp;amp;&amp;amp; DRdy) {&lt;br /&gt;
    printf(&amp;quot;  Status  = 0x%04x 0x%04x  (Buffer Full)\n&amp;quot;,stat1,stat2);&lt;br /&gt;
  } else if(DRdy) {&lt;br /&gt;
    printf(&amp;quot;  Status  = 0x%04x 0x%04x  (Data Ready)\n&amp;quot;,stat1,stat2);&lt;br /&gt;
  }else{&lt;br /&gt;
    printf(&amp;quot;  Status  = 0x%04x 0x%04x\n&amp;quot;,stat1,stat2);&lt;br /&gt;
  }&lt;br /&gt;
  printf(&amp;quot;  BitSet  = 0x%04x 0x%04x\n&amp;quot;,bit1,bit2);&lt;br /&gt;
  printf(&amp;quot;  Control = 0x%04x\n&amp;quot;,cntl1);&lt;br /&gt;
  printf(&amp;quot;  FSR     = %d nsec\n&amp;quot;,fsr);&lt;br /&gt;
  if(c775EventCount[id] == 0xffffff) {&lt;br /&gt;
    printf(&amp;quot;  Event Count     = (No Events Taken)\n&amp;quot;);&lt;br /&gt;
    printf(&amp;quot;  Last Event Read = (No Events Read)\n&amp;quot;);&lt;br /&gt;
  }else{&lt;br /&gt;
    printf(&amp;quot;  Event Count     = %d\n&amp;quot;,c775EventCount[id]);&lt;br /&gt;
    if(c775EvtReadCnt[id] == -1)&lt;br /&gt;
      printf(&amp;quot;  Last Event Read = (No Events Read)\n&amp;quot;);&lt;br /&gt;
    else&lt;br /&gt;
      printf(&amp;quot;  Last Event Read = %d\n&amp;quot;,c775EvtReadCnt[id]);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775PrintEvent - Print event from TDC to standard out. &lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: Number of Data words read from the TDC (including Header/Trailer).&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
c775PrintEvent(int id, int pflag)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  int ii, nWords, evID;&lt;br /&gt;
  UINT32 header, trailer, dCnt;&lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    printf(&amp;quot;c775ClearThresh: ERROR : TDC id %d not initialized \n&amp;quot;,id);&lt;br /&gt;
    return(-1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Check if there is a valid event */&lt;br /&gt;
&lt;br /&gt;
  if((c775p[id]-&amp;gt;status2)&amp;amp;C775_BUFFER_EMPTY) {&lt;br /&gt;
    printf(&amp;quot;c775PrintEvent: Data Buffer is EMPTY!\n&amp;quot;);&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  if((c775p[id]-&amp;gt;status1)&amp;amp;C775_DATA_READY) {&lt;br /&gt;
    dCnt = 0;&lt;br /&gt;
    /* Read Header - Get Word count */&lt;br /&gt;
    header = c775pl[id]-&amp;gt;data[0];&lt;br /&gt;
    if((header&amp;amp;C775_DATA_ID_MASK) != C775_HEADER_DATA) {&lt;br /&gt;
      printf(&amp;quot;c775PrintEvent: ERROR: Invalid Header Word 0x%08x\n&amp;quot;,header);&lt;br /&gt;
      return(-1);&lt;br /&gt;
    }else{&lt;br /&gt;
      printf(&amp;quot;  TDC DATA for Module %d\n&amp;quot;,id);&lt;br /&gt;
      nWords = (header&amp;amp;C775_WORDCOUNT_MASK)&amp;gt;&amp;gt;8;&lt;br /&gt;
      dCnt++;&lt;br /&gt;
      printf(&amp;quot;  Header: 0x%08x   nWords = %d &amp;quot;,header,nWords);&lt;br /&gt;
   }&lt;br /&gt;
    for(ii=0;ii&amp;lt;nWords;ii++) {&lt;br /&gt;
      if ((ii % 5) == 0) printf(&amp;quot;\n    &amp;quot;);&lt;br /&gt;
      printf(&amp;quot;  0x%08x&amp;quot;,(UINT32) c775pl[id]-&amp;gt;data[ii+1]);&lt;br /&gt;
    }&lt;br /&gt;
    printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
    dCnt += ii;&lt;br /&gt;
&lt;br /&gt;
    trailer = c775pl[id]-&amp;gt;data[dCnt];&lt;br /&gt;
    if((trailer&amp;amp;C775_DATA_ID_MASK) != C775_TRAILER_DATA) {&lt;br /&gt;
      printf(&amp;quot;c775PrintEvent: ERROR: Invalid Trailer Word 0x%08x\n&amp;quot;,trailer);&lt;br /&gt;
      return(-1);&lt;br /&gt;
    }else{&lt;br /&gt;
      evID = trailer&amp;amp;C775_EVENTCOUNT_MASK;&lt;br /&gt;
      dCnt++;&lt;br /&gt;
      printf(&amp;quot;  Trailer: 0x%08x   Event Count = %d \n&amp;quot;,trailer,evID);&lt;br /&gt;
    }&lt;br /&gt;
    C775_EXEC_SET_EVTREADCNT(id,evID);&lt;br /&gt;
    return (dCnt);&lt;br /&gt;
&lt;br /&gt;
  }else{&lt;br /&gt;
    printf(&amp;quot;c775PrintEvent: Data Not ready for readout!\n&amp;quot;);&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775ReadEvent - Read event from TDC to specified address. &lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: Number of Data words read from the TDC (including Header/Trailer).&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
c775ReadEvent(int id, UINT32 *data)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  int ii, nWords, evID;&lt;br /&gt;
  UINT32 header, trailer, dCnt;&lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775ReadEvent: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return(-1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Check if there is a valid event */&lt;br /&gt;
&lt;br /&gt;
  if((c775p[id]-&amp;gt;status2)&amp;amp;C775_BUFFER_EMPTY) {&lt;br /&gt;
    logMsg(&amp;quot;c775ReadEvent: Data Buffer is EMPTY!\n&amp;quot;,0,0,0,0,0,0);&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
  if((c775p[id]-&amp;gt;status1)&amp;amp;C775_DATA_READY) {&lt;br /&gt;
    dCnt = 0;&lt;br /&gt;
    /* Read Header - Get Word count */&lt;br /&gt;
    header = c775pl[id]-&amp;gt;data[dCnt];&lt;br /&gt;
    if((header&amp;amp;C775_DATA_ID_MASK) != C775_HEADER_DATA) {&lt;br /&gt;
      logMsg(&amp;quot;c775ReadEvent: ERROR: Invalid Header Word 0x%08x\n&amp;quot;,header,0,0,0,0&lt;br /&gt;
,0);&lt;br /&gt;
      return(-1);&lt;br /&gt;
    }else{&lt;br /&gt;
      nWords = (header&amp;amp;C775_WORDCOUNT_MASK)&amp;gt;&amp;gt;8;&lt;br /&gt;
      data[dCnt] = header;&lt;br /&gt;
      dCnt++;&lt;br /&gt;
    }&lt;br /&gt;
    for(ii=0;ii&amp;lt;nWords;ii++) {&lt;br /&gt;
      data[ii+1] = c775pl[id]-&amp;gt;data[ii+1];&lt;br /&gt;
   }&lt;br /&gt;
    dCnt += ii;&lt;br /&gt;
&lt;br /&gt;
    trailer = c775pl[id]-&amp;gt;data[dCnt];&lt;br /&gt;
    if((trailer&amp;amp;C775_DATA_ID_MASK) != C775_TRAILER_DATA) {&lt;br /&gt;
      logMsg(&amp;quot;c775ReadEvent: ERROR: Invalid Trailer Word 0x%08x\n&amp;quot;,trailer,0,0,0&lt;br /&gt;
,0,0);&lt;br /&gt;
      return(-1);&lt;br /&gt;
    }else{&lt;br /&gt;
      evID = trailer&amp;amp;C775_EVENTCOUNT_MASK;&lt;br /&gt;
      data[dCnt] = trailer;&lt;br /&gt;
      dCnt++;&lt;br /&gt;
    }&lt;br /&gt;
    C775_EXEC_SET_EVTREADCNT(id,evID);&lt;br /&gt;
    return (dCnt);&lt;br /&gt;
&lt;br /&gt;
  }else{&lt;br /&gt;
    logMsg(&amp;quot;c775ReadEvent: Data Not ready for readout!\n&amp;quot;,0,0,0,0,0,0);&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775FlushEvent - Flush event/data from TDC. &lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: Number of Data words read from the TDC.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
c775FlushEvent(int id, int fflag)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  int evID;&lt;br /&gt;
  int done = 0;&lt;br /&gt;
  UINT32 tmpData, dCnt;&lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775FlushEvent: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return(-1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Check if there is a valid event */&lt;br /&gt;
&lt;br /&gt;
  if((c775p[id]-&amp;gt;status2)&amp;amp;C775_BUFFER_EMPTY) {&lt;br /&gt;
    if(fflag &amp;gt; 0) logMsg(&amp;quot;c775FlushEvent: Data Buffer is EMPTY!\n&amp;quot;,0,0,0,0,0,0);&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Check if Data Ready Flag is on */&lt;br /&gt;
  if((c775p[id]-&amp;gt;status1)&amp;amp;C775_DATA_READY) {&lt;br /&gt;
    dCnt = 0;&lt;br /&gt;
    &lt;br /&gt;
    while (!done) {&lt;br /&gt;
      tmpData = c775pl[id]-&amp;gt;data[dCnt];&lt;br /&gt;
      switch (tmpData&amp;amp;C775_DATA_ID_MASK) {&lt;br /&gt;
      case C775_HEADER_DATA:&lt;br /&gt;
        if(fflag &amp;gt; 0) logMsg(&amp;quot;c775FlushEvent: Found Header 0x%08x\n&amp;quot;,tmpData,0,0&lt;br /&gt;
,0,0,0);&lt;br /&gt;
        break;&lt;br /&gt;
      case C775_DATA:&lt;br /&gt;
        break;&lt;br /&gt;
      case C775_TRAILER_DATA:&lt;br /&gt;
        if(fflag &amp;gt; 0) logMsg(&amp;quot; c775FlushEvent: Found Trailer 0x%08x\n&amp;quot;,tmpData,0&lt;br /&gt;
,0,0,0,0);&lt;br /&gt;
        evID = tmpData&amp;amp;C775_EVENTCOUNT_MASK;&lt;br /&gt;
        C775_EXEC_SET_EVTREADCNT(id,evID);&lt;br /&gt;
        done = 1;&lt;br /&gt;
        break;&lt;br /&gt;
      case C775_INVALID_DATA:&lt;br /&gt;
        if(fflag &amp;gt; 0) logMsg(&amp;quot; c775FlushEvent: Buffer Empty 0x%08x\n&amp;quot;,tmpData,0,&lt;br /&gt;
0,0,0,0);&lt;br /&gt;
        done = 1;&lt;br /&gt;
        break;&lt;br /&gt;
      default:&lt;br /&gt;
        if(fflag &amp;gt; 0) logMsg(&amp;quot; c775FlushEvent: Invalid Data 0x%08x\n&amp;quot;,tmpData,0,&lt;br /&gt;
0,0,0,0);&lt;br /&gt;
      }&lt;br /&gt;
&lt;br /&gt;
      /* Print out Data */&lt;br /&gt;
      if(fflag &amp;gt; 1) {&lt;br /&gt;
        if ((dCnt % 5) == 0) printf(&amp;quot;\n    &amp;quot;);&lt;br /&gt;
        printf(&amp;quot;  0x%08x &amp;quot;,tmpData);&lt;br /&gt;
      }&lt;br /&gt;
      dCnt++;&lt;br /&gt;
    }&lt;br /&gt;
    if(fflag &amp;gt; 1) printf(&amp;quot;\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    return (dCnt);&lt;br /&gt;
&lt;br /&gt;
  }else{&lt;br /&gt;
    if(fflag &amp;gt; 0) logMsg(&amp;quot;c775FlushEvent: Data Not ready for readout!\n&amp;quot;,0,0,0,0&lt;br /&gt;
,0,0);&lt;br /&gt;
    return(0);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775ReadBlock - Read Block of events from TDC to specified address. &lt;br /&gt;
*&lt;br /&gt;
* INPUTS:    id     - module id of TDC to access&lt;br /&gt;
*            data   - address of data destination&lt;br /&gt;
*            nwrds  - number of data words to transfer&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: OK or ERROR on success of transfer.&lt;br /&gt;
*&lt;br /&gt;
* Note: User must call c775IncrEventBlk after a successful&lt;br /&gt;
*       call to c775ReadBlock to increment the number of events Read.&lt;br /&gt;
*         (e.g.   c775IncrEventBlk(0,15);&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
c775ReadBlock(int id, volatile UINT32 *data, int nwrds)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  int retVal, xferCount;&lt;br /&gt;
  UINT32 evID;&lt;br /&gt;
  UINT16 stat = 0;&lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775ReadBlock: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return(-1);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
#ifdef VXWORKSPPC&lt;br /&gt;
  /* Don't bother checking if there is a valid event. Just blast data out of the&lt;br /&gt;
 &lt;br /&gt;
     FIFO Valid or Invalid &lt;br /&gt;
     Also assume that the Universe DMA programming is setup. */&lt;br /&gt;
&lt;br /&gt;
  retVal = sysVmeDmaSend((UINT32)data, (UINT32)(c775pl[id]-&amp;gt;data), (nwrds&amp;lt;&amp;lt;2), 0&lt;br /&gt;
);&lt;br /&gt;
  if(retVal &amp;lt; 0) {&lt;br /&gt;
    logMsg(&amp;quot;c775ReadBlock: ERROR in DMA transfer Initialization 0x%x\n&amp;quot;,retVal,0&lt;br /&gt;
,0,0,0,0);&lt;br /&gt;
    return(retVal);&lt;br /&gt;
  }&lt;br /&gt;
  /* Wait until Done or Error */&lt;br /&gt;
  retVal = sysVmeDmaDone(1000,1);&lt;br /&gt;
&lt;br /&gt;
#else&lt;br /&gt;
 &lt;br /&gt;
  /* 68K Block 32 transfer from FIFO using VME2Chip */&lt;br /&gt;
  retVal = mvme_dma((long)data, 1, (long)(c775pl[id]-&amp;gt;data), 0, nwrds, 1);&lt;br /&gt;
&lt;br /&gt;
#endif&lt;br /&gt;
&lt;br /&gt;
  if(retVal != 0) {&lt;br /&gt;
    /* Check to see if error was generated by TDC */&lt;br /&gt;
    stat = (c775p[id]-&amp;gt;bitSet1)&amp;amp;C775_VME_BUS_ERROR;&lt;br /&gt;
    if((retVal&amp;gt;0) &amp;amp;&amp;amp; (stat)) {&lt;br /&gt;
      c775p[id]-&amp;gt;bitClear1 = C775_VME_BUS_ERROR;&lt;br /&gt;
      logMsg(&amp;quot;c775ReadBlock: INFO: DMA terminated by TDC(BUS Error) - Transfer O&lt;br /&gt;
K\n&amp;quot;,0,0,0,0,0,0);&lt;br /&gt;
      xferCount = (nwrds - (retVal&amp;gt;&amp;gt;2));  /* Number of Longwords transfered */&lt;br /&gt;
      if ((data[xferCount-1]&amp;amp;C775_DATA_ID_MASK) == C775_TRAILER_DATA) {&lt;br /&gt;
        evID = data[xferCount-1]&amp;amp;C775_EVENTCOUNT_MASK;&lt;br /&gt;
        C775_EXEC_SET_EVTREADCNT(id,evID);&lt;br /&gt;
        return(xferCount); /* Return number of data words transfered */&lt;br /&gt;
      } else {&lt;br /&gt;
        logMsg(&amp;quot;c775ReadBlock: ERROR: Invalid Trailer data 0x%x\n&amp;quot;,data[xferCoun&lt;br /&gt;
t-1],0,0,0,0,0);&lt;br /&gt;
        return(xferCount);&lt;br /&gt;
      }&lt;br /&gt;
    } else {&lt;br /&gt;
      logMsg(&amp;quot;c775ReadBlock: ERROR in DMA transfer 0x%x\n&amp;quot;,retVal,0,0,0,0,0);&lt;br /&gt;
      return(retVal);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return(OK);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775Int - default interrupt handler&lt;br /&gt;
*&lt;br /&gt;
* This rountine handles the c775 TDC interrupt.  A user routine is&lt;br /&gt;
* called, if one was connected by c775IntConnect().&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: N/A&lt;br /&gt;
*&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
LOCAL void &lt;br /&gt;
c775Int (void)&lt;br /&gt;
{&lt;br /&gt;
  int ii=0;&lt;br /&gt;
  UINT32 nevt=0;&lt;br /&gt;
  &lt;br /&gt;
  /* Disable interrupts */&lt;br /&gt;
  sysIntDisable(c775IntLevel);&lt;br /&gt;
&lt;br /&gt;
  c775IntCount++;&lt;br /&gt;
 &lt;br /&gt;
  if (c775IntRoutine != NULL)  {     /* call user routine */&lt;br /&gt;
    (*c775IntRoutine) (c775IntArg);&lt;br /&gt;
  }else{&lt;br /&gt;
    if((c775IntID&amp;lt;0) || (c775p[c775IntID] == NULL)) {&lt;br /&gt;
      logMsg(&amp;quot;c775Int: ERROR : TDC id %d not initialized \n&amp;quot;,c775IntID,0,0,0,0,0&lt;br /&gt;
);&lt;br /&gt;
      return;&lt;br /&gt;
    }&lt;br /&gt;
    /* Default action is to increment the Read pointer by&lt;br /&gt;
       the number of events in the Event Trigger register&lt;br /&gt;
       or until the Data buffer is empty. The later case would&lt;br /&gt;
       indicate a possible error. In either case the data is&lt;br /&gt;
       effectively thrown away */&lt;br /&gt;
    nevt = (c775p[c775IntID]-&amp;gt;evTrigger)&amp;amp;C775_EVTRIGGER_MASK;&lt;br /&gt;
    while ( (ii&amp;lt;nevt) &amp;amp;&amp;amp; (c775Dready(c775IntID) &amp;gt; 0) ) {&lt;br /&gt;
      C775_EXEC_INCR_EVENT(c775IntID);&lt;br /&gt;
      ii++;&lt;br /&gt;
    }&lt;br /&gt;
    if(ii&amp;lt;nevt)&lt;br /&gt;
      logMsg(&amp;quot;c775Int: WARN : TDC %d - Events dumped (%d) != Events Triggered (%&lt;br /&gt;
d)\n&amp;quot;,&lt;br /&gt;
             c775IntID,ii,nevt,0,0,0);&lt;br /&gt;
    logMsg(&amp;quot;c775Int: Processed %d events\n&amp;quot;,nevt,0,0,0,0,0);&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  /* Enable interrupts */&lt;br /&gt;
  sysIntEnable(c775IntLevel);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775IntConnect - connect a user routine to the c775 TDC interrupt&lt;br /&gt;
*&lt;br /&gt;
* This routine specifies the user interrupt routine to be called at each&lt;br /&gt;
* interrupt. &lt;br /&gt;
*&lt;br /&gt;
* RETURNS: OK, or ERROR if Interrupts are enabled&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
STATUS &lt;br /&gt;
c775IntConnect (VOIDFUNCPTR routine, int arg, UINT16 level, UINT16 vector)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if(c775IntRunning) {&lt;br /&gt;
    printf(&amp;quot;c775IntConnect: ERROR : Interrupts already Initialized for TDC id %d&lt;br /&gt;
\n&amp;quot;,&lt;br /&gt;
           c775IntID);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
 &lt;br /&gt;
  c775IntRoutine = routine;&lt;br /&gt;
  c775IntArg = arg;&lt;br /&gt;
&lt;br /&gt;
  /* Check for user defined VME interrupt level and vector */&lt;br /&gt;
  if(level == 0) {&lt;br /&gt;
    c775IntLevel = C775_VME_INT_LEVEL; /* use default */&lt;br /&gt;
  }else if (level &amp;gt; 7) {&lt;br /&gt;
    printf(&amp;quot;c775IntConnect: ERROR: Invalid VME interrupt level (%d). Must be (1-&lt;br /&gt;
7)\n&amp;quot;,level);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  } else {&lt;br /&gt;
    c775IntLevel = level;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(vector == 0) {&lt;br /&gt;
    c775IntVec = C775_INT_VEC;  /* use default */&lt;br /&gt;
  }else if ((vector &amp;lt; 32)||(vector&amp;gt;255)) {&lt;br /&gt;
    printf(&amp;quot;c775IntConnect: ERROR: Invalid interrupt vector (%d). Must be (32&amp;lt;ve&lt;br /&gt;
ctor&amp;lt;255)\n&amp;quot;,vector);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }else{&lt;br /&gt;
    c775IntVec = vector;&lt;br /&gt;
  }&lt;br /&gt;
      &lt;br /&gt;
  /* Connect the ISR */&lt;br /&gt;
#ifdef VXWORKSPPC&lt;br /&gt;
  if((intDisconnect((int)INUM_TO_IVEC(c775IntVec)) != 0)) {&lt;br /&gt;
    printf(&amp;quot;c775IntConnect: ERROR disconnecting Interrupt\n&amp;quot;);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
#endif&lt;br /&gt;
  if((intConnect(INUM_TO_IVEC(c775IntVec),c775Int,0)) != 0) {&lt;br /&gt;
    printf(&amp;quot;c775IntConnect: ERROR in intConnect()\n&amp;quot;);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return (OK);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775IntEnable - Enable interrupts from specified TDC&lt;br /&gt;
*&lt;br /&gt;
* Enables interrupts for a specified TDC.&lt;br /&gt;
* &lt;br /&gt;
* RETURNS OK or ERROR if TDC is not available or parameter is out of range&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
STATUS &lt;br /&gt;
c775IntEnable (int id, UINT16 evCnt)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if(c775IntRunning) {&lt;br /&gt;
    printf(&amp;quot;c775IntEnable: ERROR : Interrupts already initialized for TDC id %d\&lt;br /&gt;
n&amp;quot;,&lt;br /&gt;
           c775IntID);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    printf(&amp;quot;c775IntEnable: ERROR : TDC id %d not initialized \n&amp;quot;,id);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }else{&lt;br /&gt;
    c775IntID = id;&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  /* check for event count out of range */&lt;br /&gt;
  if((evCnt&amp;lt;=0) || (evCnt&amp;gt;31)) {&lt;br /&gt;
    printf(&amp;quot;c775IntEnable: ERROR: Event count %d for Interrupt is out of range (&lt;br /&gt;
1-31)\n&amp;quot;&lt;br /&gt;
           ,evCnt);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  sysIntEnable(c775IntLevel);   /* Enable VME interrupts */&lt;br /&gt;
  &lt;br /&gt;
  /* Zero Counter and set Running Flag */&lt;br /&gt;
  c775IntEvCount = evCnt;&lt;br /&gt;
  c775IntCount = 0;&lt;br /&gt;
  c775IntRunning = TRUE;&lt;br /&gt;
  /* Enable interrupts on TDC */&lt;br /&gt;
  c775p[c775IntID]-&amp;gt;intVector = c775IntVec;&lt;br /&gt;
  c775p[c775IntID]-&amp;gt;intLevel = c775IntLevel;&lt;br /&gt;
  c775p[c775IntID]-&amp;gt;evTrigger = c775IntEvCount;&lt;br /&gt;
  &lt;br /&gt;
  return(OK);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775IntDisable - disable the TDC interrupts&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: OK, or ERROR if not initialized&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
STATUS &lt;br /&gt;
c775IntDisable (int iflag)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  if((c775IntID&amp;lt;0) || (c775p[c775IntID] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775IntDisable: ERROR : TDC id %d not initialized \n&amp;quot;,c775IntID,0,0,&lt;br /&gt;
0,0,0);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  sysIntDisable(c775IntLevel);   /* Disable VME interrupts */&lt;br /&gt;
  c775p[c775IntID]-&amp;gt;evTrigger = 0;&lt;br /&gt;
&lt;br /&gt;
  /* Tell tasks that Interrupts have been disabled */&lt;br /&gt;
  if(iflag &amp;gt; 0) {&lt;br /&gt;
    c775IntRunning = FALSE;&lt;br /&gt;
    c775p[c775IntID]-&amp;gt;intLevel = 0;&lt;br /&gt;
    c775p[c775IntID]-&amp;gt;intVector = 0;&lt;br /&gt;
  }else{&lt;br /&gt;
    semGive(c775Sem);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  return (OK);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775IntResume - Re-enable interrupts from previously &lt;br /&gt;
*                 intitialized TDC&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: OK, or ERROR if not initialized&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
STATUS &lt;br /&gt;
c775IntResume (void)&lt;br /&gt;
{&lt;br /&gt;
  UINT16 evTrig = 0;&lt;br /&gt;
&lt;br /&gt;
  if((c775IntID&amp;lt;0) || (c775p[c775IntID] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775IntResume: ERROR : TDC id %d not initialized \n&amp;quot;,c775IntID,0,0,0&lt;br /&gt;
,0,0);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if ((c775IntRunning)) {&lt;br /&gt;
    evTrig = (c775p[c775IntID]-&amp;gt;evTrigger)&amp;amp;C775_EVTRIGGER_MASK;&lt;br /&gt;
    if (evTrig == 0) {&lt;br /&gt;
      sysIntEnable(c775IntLevel);&lt;br /&gt;
      c775p[c775IntID]-&amp;gt;evTrigger = c775IntEvCount;&lt;br /&gt;
    } else {&lt;br /&gt;
      logMsg(&amp;quot;c775IntResume: WARNING : Interrupts already enabled \n&amp;quot;,0,0,0,0,0,&lt;br /&gt;
0);&lt;br /&gt;
      return(ERROR);&lt;br /&gt;
    }&lt;br /&gt;
  } else {&lt;br /&gt;
      logMsg(&amp;quot;c775IntResume: ERROR : Interrupts are not Enabled \n&amp;quot;,0,0,0,0,0,0)&lt;br /&gt;
;&lt;br /&gt;
      return(ERROR);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  return (OK);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775Sparse - Enable/Disable Overflow and Under threshold sparsification&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: Bit Set 2 Register value.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
UINT16&lt;br /&gt;
c775Sparse(int id, int over, int under)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    printf(&amp;quot;c775Sparse: ERROR : TDC id %d not initialized \n&amp;quot;,id);&lt;br /&gt;
    return(0xffff);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  if(!over) {  /* Set Overflow suppression */&lt;br /&gt;
    c775p[id]-&amp;gt;bitSet2 = C775_OVERFLOW_SUP;&lt;br /&gt;
  }else{&lt;br /&gt;
    c775p[id]-&amp;gt;bitClear2 = C775_OVERFLOW_SUP;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(!under) {  /* Set Underflow suppression */&lt;br /&gt;
    c775p[id]-&amp;gt;bitSet2 = C775_UNDERFLOW_SUP;&lt;br /&gt;
  }else{&lt;br /&gt;
    c775p[id]-&amp;gt;bitClear2 = C775_UNDERFLOW_SUP;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return((c775p[id]-&amp;gt;bitSet2)&amp;amp;C775_BITSET2_MASK);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775Dready - Return status of Data Ready bit in TDC&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: 0(No Data) or  # of events in FIFO (1-32) or ERROR.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
c775Dready(int id)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
 int nevts = 0;&lt;br /&gt;
  UINT16 stat=0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775Dready: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return (ERROR);&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  stat = (c775p[id]-&amp;gt;status1)&amp;amp;C775_DATA_READY;&lt;br /&gt;
  if(stat) {&lt;br /&gt;
    C775_EXEC_READ_EVENT_COUNT(id);&lt;br /&gt;
    nevts = c775EventCount[id] - c775EvtReadCnt[id];&lt;br /&gt;
    if(nevts &amp;lt;= 0) {&lt;br /&gt;
      logMsg(&amp;quot;c775Dready: ERROR : Bad Event Ready Count (nevts = %d)\n&amp;quot;,&lt;br /&gt;
             nevts,0,0,0,0,0);&lt;br /&gt;
      return(ERROR);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return(nevts);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775SetFSR - Set and/or Return TDC full scale range programming&lt;br /&gt;
*&lt;br /&gt;
*      Register value:    0xff (255) -&amp;gt;  35 ps/count  (  140ns FSR )&lt;br /&gt;
*       range between:    0x1e ( 30) -&amp;gt; 300 ps/count  ( 1200ns FSR )&lt;br /&gt;
*&lt;br /&gt;
*        FSR = 4*(290-reg)&lt;br /&gt;
*&lt;br /&gt;
*        reg = 290 - FSR/4&lt;br /&gt;
*&lt;br /&gt;
*      Note: Passing 0 for fsr will return the contents of the register&lt;br /&gt;
*            but not set it.&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: Full scale range of the TDC in nanoseconds or ERROR.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
int&lt;br /&gt;
c775SetFSR(int id, UINT16 fsr) &lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
  int rfsr=0;&lt;br /&gt;
  UINT16 reg;&lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775SetFSR: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return (ERROR);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(fsr==0) {&lt;br /&gt;
    reg = (c775p[id]-&amp;gt;iped)&amp;amp;C775_FSR_MASK;&lt;br /&gt;
    rfsr = (int)(290 - reg)*4;&lt;br /&gt;
  }else if((fsr&amp;lt;C775_MIN_FSR)||(fsr&amp;gt;C775_MAX_FSR)) {&lt;br /&gt;
    logMsg(&amp;quot;c775SetFSR: ERROR: FSR (%d ns) out of range (140&amp;lt;=FSR&amp;lt;=1200)\n&amp;quot;,fsr,&lt;br /&gt;
0,0,0,0,0);&lt;br /&gt;
    return(ERROR);&lt;br /&gt;
  }else{&lt;br /&gt;
    reg = (UINT16)(290 - (fsr&amp;gt;&amp;gt;2));&lt;br /&gt;
    c775p[id]-&amp;gt;iped = reg;&lt;br /&gt;
    reg = (c775p[id]-&amp;gt;iped)&amp;amp;C775_FSR_MASK;&lt;br /&gt;
    rfsr = (int)(290 - reg)*4;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  return(rfsr);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
/******************************************************************************&lt;br /&gt;
 *&lt;br /&gt;
 *&lt;br /&gt;
 * c775BitSet2      - Program Bit Set 2 register&lt;br /&gt;
 * c775BitClear2    - Program Bit clear 2 register&lt;br /&gt;
 *&lt;br /&gt;
 */&lt;br /&gt;
&lt;br /&gt;
INT16&lt;br /&gt;
c775BitSet2(int id, UINT16 val)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775BitSet2: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return (ERROR);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(val)&lt;br /&gt;
    c775p[id]-&amp;gt;bitSet2 = val;&lt;br /&gt;
&lt;br /&gt;
  return((c775p[id]-&amp;gt;bitSet2)&amp;amp;C775_BITSET2_MASK);&lt;br /&gt;
}&lt;br /&gt;
INT16&lt;br /&gt;
c775BitClear2(int id, UINT16 val)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775BitClear2: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return (ERROR);&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if(val)&lt;br /&gt;
    c775p[id]-&amp;gt;bitClear2 = val;&lt;br /&gt;
&lt;br /&gt;
  return((c775p[id]-&amp;gt;bitSet2)&amp;amp;C775_BITSET2_MASK);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
/*******************************************************************************&lt;br /&gt;
*&lt;br /&gt;
* c775ClearThresh  - Zero TDC thresholds for all channels&lt;br /&gt;
* c775Gate         - Issue Software Gate to TDC&lt;br /&gt;
* c775IncrEventBlk - Increment Event counter for Block reads&lt;br /&gt;
* c775IncrEvent    - Increment Read pointer to next event in the Buffer&lt;br /&gt;
* c775IncrWord     - Increment Read pointer to next word in the event&lt;br /&gt;
* c775Enable       - Bring TDC Online (Enable Gates)&lt;br /&gt;
* c775Disable      - Bring TDC Offline (Disable Gates)&lt;br /&gt;
* c775CommonStop   - Program for Common Stop&lt;br /&gt;
* c775CommonStart  - Program for Common Start (Default)&lt;br /&gt;
* c775Clear        - Clear TDC&lt;br /&gt;
* c775Reset        - Clear/Reset TDC&lt;br /&gt;
*&lt;br /&gt;
*&lt;br /&gt;
* RETURNS: None.&lt;br /&gt;
*/&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775ClearThresh(int id)&lt;br /&gt;
{&lt;br /&gt;
  int ii;&lt;br /&gt;
&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775ClearThresh: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0)&lt;br /&gt;
;&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  for (ii=0;ii&amp;lt; C775_MAX_CHANNELS; ii++) {&lt;br /&gt;
    c775p[id]-&amp;gt;threshold[ii] = 0;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775Gate(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775Gate: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  C775_EXEC_GATE(id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775IncrEventBlk(int id, int count)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775IncrEventBlk: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0&lt;br /&gt;
);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  if((count &amp;gt; 0) &amp;amp;&amp;amp; (count &amp;lt;=32))&lt;br /&gt;
    c775EvtReadCnt[id] += count;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775IncrEvent(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775IncrEvent: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  C775_EXEC_INCR_EVENT(id);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775IncrWord(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775IncrWord: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  C775_EXEC_INCR_WORD(id);&lt;br /&gt;
}&lt;br /&gt;
void&lt;br /&gt;
c775Enable(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775Enable: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  c775p[id]-&amp;gt;bitClear2 = C775_OFFLINE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775Disable(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775Disable: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  c775p[id]-&amp;gt;bitSet2 = C775_OFFLINE;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775CommonStop(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775CommonStop: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  c775p[id]-&amp;gt;bitSet2 = C775_COMMON_STOP;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775CommonStart(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775CommonStart: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0)&lt;br /&gt;
;&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  c775p[id]-&amp;gt;bitClear2 = C775_COMMON_STOP;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775Clear(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775Clear: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  C775_EXEC_DATA_RESET(id);&lt;br /&gt;
  c775EvtReadCnt[id] = -1;&lt;br /&gt;
  c775EventCount[id] =  0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void&lt;br /&gt;
c775Reset(int id)&lt;br /&gt;
{&lt;br /&gt;
  if((id&amp;lt;0) || (c775p[id] == NULL)) {&lt;br /&gt;
    logMsg(&amp;quot;c775Reset: ERROR : TDC id %d not initialized \n&amp;quot;,id,0,0,0,0,0);&lt;br /&gt;
    return;&lt;br /&gt;
  }&lt;br /&gt;
  C775_EXEC_DATA_RESET(id);&lt;br /&gt;
  C775_EXEC_SOFT_RESET(id);&lt;br /&gt;
  c775EvtReadCnt[id] = -1;&lt;br /&gt;
  c775EventCount[id] =  0;&lt;br /&gt;
}&lt;/div&gt;</summary>
		<author><name>Oborn</name></author>
	</entry>
</feed>