do {
                ourVmeAccessOK = 1;
+               retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
                retVal = LVme_getL(my, offset);
-               retVal = LVme_getL(my, offset);
+
        } while (!ourVmeAccessOK);
        if (oldOff != offset && oldWord == retVal) {
                msglog(LOG_ERR, "wird twice: 0x%08x on 0x%08x\n", retVal, offset);
        return retVal;
 }
 
+static void berrSetL(LVme * my, unsigned long offset, LVme_L v)
+{
+
+       do {
+               ourVmeAccessOK = 1;
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+               LVme_setL(my, offset, v);
+
+       } while (!ourVmeAccessOK);
+}
+
 static int bankRequested(HwTip * my)
 {
        UInt2 val;
        }
        my->currAddr = 0xffffffff;      /* start at the end */
        my->bankRequested = 1;          /* of the empty bank */
-       my->pipeFull = 2;
-       my->daqRq = 1;
-       my->daqGr = 13;
+       my->pipeFull = LVL2_PIPE2_FULL;
+       my->daqRq = LVL2_DAQ2_RQ;
+       my->daqGr = LVL2_DAQ2_GR;
        my->fifo = LVL2_PIPE2_BASE;
 
        return 0;
 void HwTip_requestBuffer(HwTip * my)
 {
 
-       LVme_clrBitL(my->lvme, EXT_DAQ, my->daqRq);
+       {
+               LVme_L v;
+
+               v = berrGetL(my->lvme, EXT_DAQ);
+               berrSetL(my->lvme, EXT_DAQ, v & ~my->daqRq);
+       }
 
-       while (LVme_tstBitL(my->lvme, EXT_STATUS, my->daqGr)) {
+       while (berrGetL(my->lvme, EXT_STATUS) & my->daqGr) {
 #if 1
                struct timespec tS, *t = &tS;
                t->tv_sec = 0;
        }
        if (my->bankRequested == 0) {
                my->bankRequested = 1;
-               my->pipeFull = 2;
-               my->daqRq = 1;
-               my->daqGr = 13;
+               my->pipeFull = LVL2_PIPE2_FULL;
+               my->daqRq = LVL2_DAQ2_RQ;
+               my->daqGr = LVL2_DAQ2_GR;
                my->fifo = LVL2_PIPE2_BASE;
        } else {
                my->bankRequested = 0;
-               my->pipeFull = 1;
-               my->daqRq = 0;
-               my->daqGr = 12;
+               my->pipeFull = LVL2_PIPE1_FULL;
+               my->daqRq = LVL2_DAQ1_RQ;
+               my->daqGr = LVL2_DAQ1_GR;
                my->fifo = LVL2_PIPE1_BASE;
        }
        msglog(LOG_DEBUG, "wait for data\n");
-       while (!LVme_tstBitL(my->lvme, EXT_STATUS, my->pipeFull)) {
+       while (!(berrGetL(my->lvme, EXT_STATUS) & my->pipeFull)) {
 #if 1
                struct timespec tS, *t = &tS;
                t->tv_sec = 0;
 #endif
        }
        msglog(LOG_DEBUG, "data available\n");
-       LVme_setBitL(my->lvme, EXT_DAQ, my->daqRq);
+       {
+               LVme_L v;
+
+               v = berrGetL(my->lvme, EXT_DAQ);
+               berrSetL(my->lvme, EXT_DAQ, v | my->daqRq);
+       }
 
 #if 0
        {
 #endif
 
        my->currAddr = my->fifo + 0x8;
+       while (!(berrGetL(my->lvme, EXT_STATUS) & my->daqGr)) {
+       }
        my->pipeSize = berrGetL(my->lvme, my->fifo);
 }
 
 int HwTip_isBusy(HwTip * my)
 {
-       return !LVme_tstBitL(my->lvme, EXT_STATUS, my->daqGr);
+       return !(berrGetL(my->lvme, EXT_STATUS) & my->daqGr);
 }
 
 int HwTip_isEmpty(HwTip * my)
        size_t size;
        UInt1 trigTag;
 
+       if(berrGetL(my->lvme, my->fifo) == 0) {
+          msglog(LOG_ERR, "pipesize = 0\n");
+       }
+
        size = berrGetL(my->lvme, my->currAddr);
        msglog(LOG_DEBUG, "size: 0x%08x\n", size);
        if (size > 0x60) {