diff --git a/src/dev/softDev/devMbbiDirectSoftRaw.c b/src/dev/softDev/devMbbiDirectSoftRaw.c index 72b787f77..f9cd1cd48 100644 --- a/src/dev/softDev/devMbbiDirectSoftRaw.c +++ b/src/dev/softDev/devMbbiDirectSoftRaw.c @@ -80,6 +80,9 @@ static long init_record(pmbbi) "devMbbiDirectSoftRaw (init_record) Illegal INP field"); return(S_db_badField); } + /*to preserve old functionality*/ + if(pmbbi->nobt == 0) pmbbi->mask = 0xffffffff; + pmbbi->mask <<= pmbbi->shft; return(0); } @@ -89,5 +92,6 @@ static long read_mbbi(pmbbi) long status; status = dbGetLink(&pmbbi->inp,DBR_LONG,&pmbbi->rval,0,0); + if(status==0) pmbbi->rval &= pmbbi->mask; return(0); } diff --git a/src/dev/softDev/devMbbiSoftRaw.c b/src/dev/softDev/devMbbiSoftRaw.c index 6fbea2ec6..28ba4fa3b 100644 --- a/src/dev/softDev/devMbbiSoftRaw.c +++ b/src/dev/softDev/devMbbiSoftRaw.c @@ -72,6 +72,9 @@ static long init_record(pmbbi) if (pmbbi->inp.type == CONSTANT) { recGblInitConstantLink(&pmbbi->inp,DBF_ULONG,&pmbbi->rval); } + /*to preserve old functionality*/ + if(pmbbi->nobt == 0) pmbbi->mask = 0xffffffff; + pmbbi->mask <<= pmbbi->shft; return(0); } @@ -81,5 +84,6 @@ static long read_mbbi(pmbbi) long status; status = dbGetLink(&pmbbi->inp,DBR_LONG,&pmbbi->rval,0,0); + if(status==0) pmbbi->rval &= pmbbi->mask; return(0); } diff --git a/src/dev/softDev/devMbboDirectSoftRaw.c b/src/dev/softDev/devMbboDirectSoftRaw.c index 61d8d0253..b06e4643c 100644 --- a/src/dev/softDev/devMbboDirectSoftRaw.c +++ b/src/dev/softDev/devMbboDirectSoftRaw.c @@ -70,6 +70,9 @@ struct mbboDirectRecord *pmbbo; if (pmbbo->out.type != PV_LINK) status = 2; + /*to preserve old functionality*/ + if(pmbbo->nobt == 0) pmbbo->mask = 0xffffffff; + pmbbo->mask <<= pmbbo->shft; return status; } /* end init_record() */ @@ -77,7 +80,9 @@ static long write_mbbo(pmbbo) struct mbboDirectRecord *pmbbo; { long status; + unsigned long data; - status = dbPutLink(&pmbbo->out,DBR_LONG, &pmbbo->rval,1); + data = pmbbo->rval & pmbbo->mask; + status = dbPutLink(&pmbbo->out,DBR_LONG, &data,1); return(0); } diff --git a/src/dev/softDev/devMbboSoftRaw.c b/src/dev/softDev/devMbboSoftRaw.c index 258a3bf89..d4786aad4 100644 --- a/src/dev/softDev/devMbboSoftRaw.c +++ b/src/dev/softDev/devMbboSoftRaw.c @@ -68,6 +68,9 @@ struct mbboRecord *pmbbo; long status; + /*to preserve old functionality*/ + if(pmbbo->nobt == 0) pmbbo->mask = 0xffffffff; + pmbbo->mask <<= pmbbo->shft; /*dont convert*/ status = 2; return status; @@ -78,7 +81,9 @@ static long write_mbbo(pmbbo) struct mbboRecord *pmbbo; { long status; + unsigned long data; - status = dbPutLink(&pmbbo->out,DBR_LONG, &pmbbo->rval,1); + data = pmbbo->rval & pmbbo->mask; + status = dbPutLink(&pmbbo->out,DBR_LONG, &data,1); return(0); }