From 605d34920e46ff602f1fe4fd8855657549dc096f Mon Sep 17 00:00:00 2001 From: Marty Kraimer Date: Tue, 14 Sep 1993 16:37:38 +0000 Subject: [PATCH] Fixed several bugs --- src/drv/drvBb902.c | 79 +++++++++++++++------------------------------- 1 file changed, 25 insertions(+), 54 deletions(-) diff --git a/src/drv/drvBb902.c b/src/drv/drvBb902.c index 9843d74da..3b34265ec 100644 --- a/src/drv/drvBb902.c +++ b/src/drv/drvBb902.c @@ -1,5 +1,5 @@ /* drvBb902.c */ -/* share/src/drv @(#)drvBb902.c 1.6 9/14/92 */ +/* share/src/drv $Id$ */ /* * subroutines that are used to interface to the binary output cards * @@ -35,6 +35,7 @@ * > 0. * .03 08-10-92 joh made number of cards runtime configurable * .04 08-25-92 mrk made masks a macro + * .05 09-14-93 mrk Let report just display one hex value * */ @@ -67,7 +68,7 @@ struct { static long report(level) int level; { - register int i; + int i; bb902_io_report(level); return(0); @@ -86,8 +87,8 @@ static long init() /* Burr-Brown 902 binary output memory structure */ struct bo_bb902{ short csr; /* control status register */ - short low_value; /* low order 16 bits value */ - short high_value; /* high order 16 bits value */ + unsigned short low_value; /* low order 16 bits value */ + unsigned short high_value; /* high order 16 bits value */ char end_pad[0x100-6]; /* pad until next card */ }; @@ -105,7 +106,7 @@ struct bo_bb902 **pbo_bb902s; /* Burr-Brown 902s */ int bb902_driver_init(){ int bomode; int status; - register short i; + short i; struct bo_bb902 *pbo_bb902; pbo_bb902s = (struct bo_bb902 **)calloc(MAX_BB_BO_CARDS, @@ -142,11 +143,11 @@ int bb902_driver_init(){ */ int bb902_driver(card,val,mask) -register unsigned short card; -register unsigned int val; -register unsigned int mask; +unsigned short card; +unsigned long val; +unsigned long mask; { - register unsigned int work; + unsigned int work; /* verify card exists */ if (!pbo_bb902s[card]) @@ -155,13 +156,12 @@ register unsigned int mask; /* get current output */ work = (pbo_bb902s[card]->high_value << 16) /* high */ + pbo_bb902s[card]->low_value; /* low */ - /* alter specified bits */ work = (work & ~mask) | (val & mask); /* write new output */ - pbo_bb902s[card]->low_value = (unsigned short)work; pbo_bb902s[card]->high_value = (unsigned short)(work >> 16); + pbo_bb902s[card]->low_value = (unsigned short)work; return (0); } @@ -171,62 +171,33 @@ register unsigned int mask; * read the binary output */ int bb902_read(card,mask,pval) -register unsigned short card; -unsigned int mask; -register unsigned int *pval; +unsigned short card; +unsigned int mask; +unsigned int *pval; { - register unsigned int work; + unsigned int work; /* verify card exists */ - if (!pbo_bb902s[card]) - return (-1); + if (!pbo_bb902s[card]) return (-1); /* readback */ *pval = (pbo_bb902s[card]->high_value << 16) /* high */ + pbo_bb902s[card]->low_value; /* low */ + *pval &= mask; return(0); } -#define masks(K) ((1< 1){ - num_chans = bo_num_channels[BB902]; - for(j=0,k=1,l=2,m=3;j < num_chans,k < num_chans, l < num_chans,m < num_chans; - j+=IOR_MAX_COLS,k+= IOR_MAX_COLS,l+= IOR_MAX_COLS,m += IOR_MAX_COLS){ - if(j < num_chans){ - bb902_read(i,masks(j),&jval); - if (jval != 0) - jval = 1; - printf("Chan %d = %x\t ",j,jval); - } - if(k < num_chans){ - bb902_read(i,masks(k),&kval); - if (kval != 0) - kval = 1; - printf("Chan %d = %x\t ",k,kval); - } - if(l < num_chans){ - bb902_read(i,masks(l),&lval); - if (lval != 0) - lval = 1; - printf("Chan %d = %x \t",l,lval); - } - if(m < num_chans){ - bb902_read(i,masks(m),&mval); - if (mval != 0) - mval = 1; - printf("Chan %d = %x \n",m,mval); - } - } - } + for (card = 0; card < MAX_BB_BO_CARDS; card++){ + if (pbo_bb902s[card]){ + value = (pbo_bb902s[card]->high_value << 16) + + pbo_bb902s[card]->low_value; + printf("BO: BB902: card %d value=0x%08.8x\n",card,value); } } - } +}