Index: hvcontrol/src/CCCommand.cc
===================================================================
--- hvcontrol/src/CCCommand.cc	(revision 72)
+++ hvcontrol/src/CCCommand.cc	(revision 80)
@@ -86,5 +86,4 @@
       m->status->Pc = comline;      
                  
-
       ParseInput(m->status->Pc,&(m->status->NParam),m->status->Param);
       
Index: hvcontrol/src/HV.cc
===================================================================
--- hvcontrol/src/HV.cc	(revision 72)
+++ hvcontrol/src/HV.cc	(revision 80)
@@ -26,6 +26,8 @@
 
 
-HV::HV(char** usbdevice, int* usbdevicenumber, FILE* f): fNumberOfBoards(0) {
-  
+HV::HV(char** usbdevice, int* usbdevicenumber, FILE* f,bool TestMode): fNumberOfBoards(0) {
+  
+  fTestMode = TestMode;
+
   int i = 0, j = 0, ret = 0;
 
@@ -50,4 +52,10 @@
   i = 0;
  
+  if(fTestMode){
+    fprintf(stdout,"Test mode: One HVBoard initialized as dummy.\n");
+    fHVBoard[fNumberOfBoards] = new HVBoard("dummy", 0, &ftdic[fNumberOfBoards],fTestMode);
+    fNumberOfBoards++;
+    return;
+  }
   // Obtain information on FTDI devices
   for (curdev = devlist; (curdev != NULL && i<MAX_NUM_HVBOARDS); i++) {
@@ -88,5 +96,5 @@
 	ftdi_set_latency_timer(&ftdic[fNumberOfBoards], USB_LATENCY_TIMER);
 	
-	fHVBoard[fNumberOfBoards] = new HVBoard(serial, usbdevicenumber[j], &ftdic[fNumberOfBoards]);
+	fHVBoard[fNumberOfBoards] = new HVBoard(serial, usbdevicenumber[j], &ftdic[fNumberOfBoards],fTestMode);
 	fNumberOfBoards++;
 	/*
@@ -113,6 +121,10 @@
 
 
-/* Bubble-sort HV boards according to board number */
+// Bubble-sort HV boards according to board number 
 void HV::ArrangeHVBoards(HVBoard** fHVBoard, int size) {
+
+  if(fTestMode){
+    return;
+  }
 
   HVBoard* tmp;
@@ -130,4 +142,9 @@
 
 HV::~HV() {
+
+  if(fTestMode){
+    fprintf(stdout,"Test mode: No FTDI device has to be closed.\n");
+    return;
+  }
  
   int i, ret = 0;
@@ -157,7 +174,9 @@
 
 
-HVBoard::HVBoard(char* serial, int number, struct ftdi_context* ftdic) : fTimeOut(.5) 
+HVBoard::HVBoard(char* serial, int number, struct ftdi_context* ftdic,bool TestMode) : fTimeOut(.5) 
 {
  
+  fTestMode = TestMode;
+  fTestModeWrap = 0;
   FTDI_C = ftdic;
   sprintf(Serial,"%s",serial);
@@ -209,4 +228,7 @@
 
 int HVBoard::Write(unsigned char* data, int size) {
+  if (fTestMode)
+    return 3;  // implying that 3 bytes are written
+
 #ifdef DO_CAST
   return ftdi_write_data(FTDI_C, (char*)data, size);
@@ -217,4 +239,11 @@
 
 int HVBoard::Read(unsigned char* data, int size) {
+  if (fTestMode) {
+    data[0] = fTestModeWrap;
+    //    fprintf(stdout," Read Data 0X%.2X\n",data[0]);
+    fTestModeWrap++;
+    fTestModeWrap = fTestModeWrap%8;
+    return 1;  // one byte read
+  }
 #ifdef DO_CAST
   return ftdi_read_data(FTDI_C, (char*)data, size);
@@ -233,5 +262,10 @@
 */
 int HVBoard::TRead(FILE* fptr, unsigned char* rbuf, bool verbose) {
-  
+
+  if (fTestMode) {
+    Read(rbuf,BUFFER_LENGTH);
+    return 1;  // rbuf read
+  }
+
   char str[STR_LENGTH];
 
@@ -278,4 +312,7 @@
 int HVBoard::Reset(FILE* fptr, unsigned char* rbuf, bool verbose) {
 
+  if (fTestMode)
+    return 1; 
+
   char str[STR_LENGTH];
 
@@ -303,4 +340,9 @@
 /* Read status register - uses TRead() and has same return values */
 int HVBoard::GetStatus(FILE* fptr, unsigned char* rbuf, bool verbose) {
+  if (fTestMode){
+    //    printf("Test mode. (Get Status) \n");
+    return TRead(fptr,rbuf,verbose);
+    return 1;
+  }
 
   char str[STR_LENGTH];
@@ -330,4 +372,10 @@
 /* Set high voltage - uses TRead() and has same return values */
 int HVBoard::SetHV(FILE* fptr, int chain, unsigned int channel, unsigned int hv, unsigned char* rbuf, bool verbose) {
+
+  if (fTestMode){
+    printf("Test mode: Nothing to be done. \n");
+    return 1;
+  }
+
   
   char str[STR_LENGTH];
@@ -380,5 +428,10 @@
 /* Set reference voltage - uses TRead() and has same return values */
 int HVBoard::SetVRef(FILE* fptr, int chain, unsigned int vref, unsigned char* rbuf, bool verbose) {
-  
+
+    if (fTestMode){
+    printf("Test mode. Nothing to be done.\n");
+    return 1;
+  }
+
   char str[STR_LENGTH];
 
@@ -463,4 +516,5 @@
 */
 int HVBoard::Init(bool verbose) {
+
 
   unsigned char wbuf = REG_STATUS;
Index: hvcontrol/src/HV.h
===================================================================
--- hvcontrol/src/HV.h	(revision 72)
+++ hvcontrol/src/HV.h	(revision 80)
@@ -1,2 +1,4 @@
+#ifndef HV_H_SEEN
+#define HV_H_SEEN
 
 #include "Types.h"
@@ -14,8 +16,4 @@
 #endif
 #endif 
-
-
-#ifndef HV_H_SEEN
-#define HV_H_SEEN
 
 
@@ -62,6 +60,8 @@
  public:
   
-  HVBoard(char* serial, int number, struct ftdi_context* ftdic);
+  HVBoard(char* serial, int number, struct ftdi_context* ftdic, bool TestMode);
   ~HVBoard();
+
+  bool fTestMode;
 
   int Init(bool verbose);
@@ -87,4 +87,5 @@
   int  BoardNumber;
   float fTimeOut;      // [s] timeout to return from read 
+  int fTestModeWrap;
   
 };
@@ -96,9 +97,11 @@
  public:
   
-  HV(char** usbdevice, int* usbdevicenumber, FILE* f);
+  HV(char** usbdevice, int* usbdevicenumber, FILE* f,bool TestMode);
   ~HV();
 
   int fNumberOfBoards;
   int fMaxNumberOfBoards;
+
+  bool fTestMode;
 
   HVBoard* fHVBoard[MAX_NUM_HVBOARDS];
Index: hvcontrol/src/HVConfig.cc
===================================================================
--- hvcontrol/src/HVConfig.cc	(revision 72)
+++ hvcontrol/src/HVConfig.cc	(revision 80)
@@ -33,4 +33,5 @@
   }
 
+  TestMode           = false;
   NumHVBoards        = 0;
   FileName           = configfile;
@@ -81,7 +82,12 @@
   }
  
-  ReadCard("LogPath",    fLogPath,'s',f);
+  ReadCard("LogPath",    fLogPath,    's',f);
 
   ReadCard("PixMapTable",fPixMapTable,'s',f);
+
+  ReadCard("TestMode",   &str,        's',f);
+  if (!strcmp(str,"TRUE"))
+    TestMode = true;
+
 
   for (int i=0;i<MAX_NUM_HVBOARDS;i++) {
@@ -124,4 +130,5 @@
   fprintf(fptr," Log path:          %s\n\n", fLogPath);
   fprintf(fptr," Pixel map table:   %s\n\n", fPixMapTable);
+  fprintf(fptr," Test mode:         %s\n\n", TestMode ? "yes" : "no");
   fprintf(fptr," %.2d USB devices:\n\n", NumHVBoards);
   
@@ -178,4 +185,6 @@
   fprintf(f,"PixMapTable        %s\n\n",   fPixMapTable);
 
+  fprintf(f,"TestMode           %s       #Test Mode: if no HV boards are connected, the test mode can be used.",((TestMode) ? "TRUE" : "FALSE"));
+
   fprintf(f,"TimeOut            %.2f s   # Timeout to return from read (%.2f,...%.2f) s\n\n",fTimeOut,MIN_TIMEOUT,MAX_TIMEOUT);
 
Index: hvcontrol/src/HVConfig.h
===================================================================
--- hvcontrol/src/HVConfig.h	(revision 72)
+++ hvcontrol/src/HVConfig.h	(revision 80)
@@ -26,4 +26,6 @@
   char *fCCClient;
 
+  bool TestMode;
+
   bool IsDAC;
   float Coef[MAX_NUM_HVBOARDS][MAX_NUM_CHAINS][2];
Index: hvcontrol/src/HVStatus.cc
===================================================================
--- hvcontrol/src/HVStatus.cc	(revision 72)
+++ hvcontrol/src/HVStatus.cc	(revision 80)
@@ -163,6 +163,6 @@
 	  status->WC[1][i]);
  
-  if (status->Socket != -1) // Print status string to socket if open
-    write(status->Socket,str,strlen(str)+1);
+  //  if (status->Socket != -1) // Print status string to socket if open
+  //    write(status->Socket,str,strlen(str)+1);
 
 }
Index: hvcontrol/src/ProcessIO.cc
===================================================================
--- hvcontrol/src/ProcessIO.cc	(revision 72)
+++ hvcontrol/src/ProcessIO.cc	(revision 80)
@@ -24,5 +24,5 @@
   calib  = new HVCalib(config);
   log     = new Log(config->fLogPath);
-  hv      = new HV(config->fUSBDevice,config->USBDeviceNumber,stdout);
+  hv      = new HV(config->fUSBDevice,config->USBDeviceNumber,stdout,config->TestMode);
  
   pm = new PixelMap(config->fPixMapTable);
@@ -75,5 +75,8 @@
   pthread_mutex_init (&control_mutex, NULL);
   pthread_cond_init  (&control_cond,  NULL);
-    
+  
+  sprintf(str,"**************** End of constructor ProcessIO ************\n");
+  DoPrompt(str);
+  
 }
 
@@ -150,5 +153,5 @@
       // Wrong type of argument
       else if (!IsNoDigit(status->Param[1]) || !IsNoDigit(status->Param[2]) || status->Param[3][0] || !status->Param[1][0]) {
-	sprintf(str,"usage: <board> <i>|<i> <j>|<all>\n");
+	sprintf(str,"ERROR - usage: <board> <i>|<i> <j>|<all>\n");
 	DoPrompt(str);	
 	return 0;
@@ -158,5 +161,5 @@
 
 	if (!IsBoard(atoi(status->Param[1]))) {
-	  sprintf(str,"board #%d does not exist\n", atoi(status->Param[1]));
+	  sprintf(str,"ERROR -board #%d does not exist\n", atoi(status->Param[1]));
 	  DoPrompt(str);
 	  return 0;
@@ -165,5 +168,5 @@
 	if (status->Param[2][0])
 	  if (!IsBoard(atoi(status->Param[2]))) {
-	    sprintf(str,"board #%d does not exist\n", atoi(status->Param[2]));
+	    sprintf(str,"ERROR -board #%d does not exist\n", atoi(status->Param[2]));
 	    DoPrompt(str);
 	    return 0;
@@ -206,5 +209,5 @@
       } 
       else if (!IsNoDigit(status->Param[1]) || !status->Param[1][0]) {
-	sprintf(str,"usage: <chain> <i>|<i> <j>|<all>\n");
+	sprintf(str,"ERROR -usage: <chain> <i>|<i> <j>|<all>\n");
 	DoPrompt(str);	
 	return 0;
@@ -226,5 +229,5 @@
 	
 	if (atoi(status->Param[1]) < 0 || atoi(status->Param[1]) > 3) {
-	  sprintf(str,"chain #%d does not exist\n", atoi(status->Param[1]));
+	  sprintf(str,"ERROR -chain #%d does not exist\n", atoi(status->Param[1]));
 	  DoPrompt(str);
 	}
@@ -232,5 +235,5 @@
 	
 	if ((atoi(status->Param[2]) < 0 || atoi(status->Param[2]) > 3) && (atoi(status->Param[1]) != atoi(status->Param[2]))) {
-	  sprintf(str,"chain #%d does not exist\n", atoi(status->Param[2]));
+	  sprintf(str,"ERROR -chain #%d does not exist\n", atoi(status->Param[2]));
 	  DoPrompt(str);
 	}
@@ -297,5 +300,5 @@
 	allchannels = TRUE;
       else {
-	DoPrompt("error: wrong input format - usage: hv <channel>|<all> <voltage>\n");
+	DoPrompt("ERROR - wrong input format - usage: hv <channel>|<all> <voltage>\n");
 	return 0;
       }
@@ -304,5 +307,5 @@
       if (tolower(status->Param[2][0])=='x' && strlen(status->Param[2])>2) {
 	if (sPrintHex2Dec(Chop(status->Param[2]+1),&hvoltage)!=0) {
-	  DoPrompt("error: wrong input format - usage: hv <channel>|<all> <voltage>\n");
+	  DoPrompt("ERROR - wrong input format - usage: hv <channel>|<all> <voltage>\n");
 	  return 0;
 	}
@@ -311,5 +314,5 @@
       else if (tolower(status->Param[2][0])=='b' && strlen(status->Param[2])>2) {
 	if (sPrintBin2Dec(Chop(status->Param[2]+1),&hvoltage)!=0) {
-	  DoPrompt("wrong input format - usage: hv <channel>|<all> <voltage>\n");
+	  DoPrompt("ERROR - wrong input format - usage: hv <channel>|<all> <voltage>\n");
 	  return 0;
 	}
@@ -322,5 +325,5 @@
       // Wrong input format
       else {
-	DoPrompt("wrong input format - usage: hv <channel>|<all> <voltage>\n");
+	DoPrompt("ERROR - wrong input format - usage: hv <channel>|<all> <voltage>\n");
 	return 0;
       }
@@ -328,13 +331,13 @@
       // Check limits
       if (channel>31 || channel <0) {
-	DoPrompt("channel out of range (0...31)!\n");
+	DoPrompt("ERROR - channel out of range (0...31)!\n");
 	return 0;
       }
       else if ((hvoltage>0X3FFF || hvoltage <0)&&config->IsDAC) {
-	DoPrompt("high voltage out of range (Vmin: 0, Vmax: 16383)!\n");
+	DoPrompt("ERROR - high voltage out of range (Vmin: 0, Vmax: 16383)!\n");
 	return 0;
       }
       else if ((hvoltage>78.0 || hvoltage <0)&&(!(config->IsDAC))) {
-	DoPrompt("high voltage out of range (Vmin: 0, Vmax: 78.)!\n");
+	DoPrompt("ERROR - high voltage out of range (Vmin: 0, Vmax: 78.)!\n");
 	return 0;
       }
@@ -365,5 +368,5 @@
 		UpdateStatus(i,rbuf);
 		
-		sprintf(str,"board %d: high voltage of chain %d channel %d set to %d | 0X%.4X | %f V\n",hv->GetHVBoard(i)->GetBoardNumber(),j,channel,hvoltage,hvoltage,calib->DACToHV(hvoltage,hv->GetHVBoard(i)->GetBoardNumber(),j,channel));
+		sprintf(str,"OK - board %d: high voltage of chain %d channel %d set to %d | 0X%.4X | %f V\n",hv->GetHVBoard(i)->GetBoardNumber(),j,channel,hvoltage,hvoltage,calib->DACToHV(hvoltage,hv->GetHVBoard(i)->GetBoardNumber(),j,channel));
 		//		DoPrompt(str);
 		if (status->Verbose) {
@@ -374,5 +377,5 @@
 	      }
 	      else {
-		sprintf(str,"board %d error: could not set hv - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
+		sprintf(str,"ERROR - board %d error: could not set hv - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
 		DoPrompt(str);
 		errors++;
@@ -381,5 +384,5 @@
 	  }
 	  else {
-	    sprintf(str,"updating board %d chain %d\n",hv->GetHVBoard(i)->GetBoardNumber(),j);
+	    sprintf(str,"OK - updating board %d chain %d\n",hv->GetHVBoard(i)->GetBoardNumber(),j);
 	    DoPrompt(str);
 	  
@@ -404,5 +407,5 @@
 		  
 		  if (status->Verbose) {
-		    sprintf(str,"board %d: high voltage of chain %d channel %d set to %d | 0X%.4X | %f V\n",hv->GetHVBoard(i)->GetBoardNumber(),j,channel,hvoltage,hvoltage,calib->DACToHV(hvoltage,hv->GetHVBoard(i)->GetBoardNumber(),j,channel));
+		    sprintf(str,"OK - board %d: high voltage of chain %d channel %d set to %d | 0X%.4X | %f V\n",hv->GetHVBoard(i)->GetBoardNumber(),j,channel,hvoltage,hvoltage,calib->DACToHV(hvoltage,hv->GetHVBoard(i)->GetBoardNumber(),j,channel));
 		    //sprintf(str,"board %d: high voltage of chain %d channel %d set to %d | 0X%.4X\n",hv->GetHVBoard(i)->GetBoardNumber(),j,k,hvoltage,hvoltage);
 		    //   DoPrompt(str);
@@ -414,5 +417,5 @@
 		
 		else {
-		  sprintf(str,"board %d error: could not set HV - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
+		  sprintf(str,"ERROR - board %d error: could not set HV - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
 		  DoPrompt(str);
 		  errors++;
@@ -429,9 +432,9 @@
 
       if (errors) {
-	sprintf(str,"warning %d error(s) => check timeout and try again\n",errors);
+	sprintf(str,"ERROR - warning %d error(s) => check timeout and try again\n",errors);
 	DoPrompt(str);
       }
       else {
-	sprintf(str,"no error(s)... success!\n");
+	sprintf(str,"OK - no error(s)... success!\n");
 	DoPrompt(str);
       }
@@ -439,5 +442,5 @@
     }
     else {
-      sprintf(str,"usage: hv <channel>|<all> <voltage>\n");
+      sprintf(str,"ERROR - usage: hv <channel>|<all> <voltage>\n");
       DoPrompt(str);
     }
@@ -481,5 +484,5 @@
       if (tolower(status->Param[2][0])=='x' && strlen(status->Param[2])>2) {
 	if (sPrintHex2Dec(Chop(status->Param[2]+1),(unsigned int *)hvdiff)!=0) {
-	  DoPrompt("error: wrong input format - usage: hvdiff <channel>|<all> <hv difference>\n");
+	  DoPrompt("ERROR - wrong input format - usage: hvdiff <channel>|<all> <hv difference>\n");
 	  return 0;
 	}
@@ -488,5 +491,5 @@
       else if (tolower(status->Param[2][0])=='b' && strlen(status->Param[2])>2) {
 	if (sPrintBin2Dec(Chop(status->Param[2]+1),(unsigned int *)hvdiff)!=0) {
-	  DoPrompt("wrong input format - usage: hvdiff <channel>|<all> <hv difference>\n");
+	  DoPrompt("ERROR - wrong input format - usage: hvdiff <channel>|<all> <hv difference>\n");
 	  return 0;
 	}
@@ -499,30 +502,24 @@
       // Wrong input format
       else {
-	DoPrompt("wrong input format - usage: hvdiff <channel>|<all> <hv difference>\n");
+	DoPrompt("ERROR - wrong input format - usage: hvdiff <channel>|<all> <hv difference>\n");
 	return 0;
       }
       // Check limits
       if (channel>31 || channel <0) {
-	DoPrompt("channel out of range (0...31)!\n");
+	sprintf(str,"ERROR - channel out of range (0...31)!\n");
+	DoPrompt(str);
 	return 0;
       }
       else if (hvdiff>config->DACMax || hvdiff <(-(config->DACMax))) {
-	sprintf(str,"difference of high voltage [hvdiff:%d] out of range (Vmin: 0.0, Vmax: %d)!\n", hvdiff,config->DACMax);
+	sprintf(str,"ERROR - difference of high voltage [hvdiff:%d] out of range (Vmin: 0.0, Vmax: %d)!\n", hvdiff,config->DACMax);
 	DoPrompt(str);
 	return 0;
       }
       else if (hvdiffV>(calib->DACToHV(config->DACMax,0,0,0))|| hvdiffV<-(calib->DACToHV(config->DACMax,0,0,0))) {
-	sprintf(str,"difference of high voltage [hvdiff:%f] out of range (Vmin: 0.0, Vmax: %f)!\n",hvdiffV,calib->DACToHV(config->DACMax,0,0,0));
-	DoPrompt(str);
-	return 0;
-      }
-
-      sprintf(str,"Error - Test \n");
-      DoPrompt(str);
-      if (status->Socket != -1) // Print status string to socket if open
-	write(status->Socket,str,strlen(str)+1);
-      sPrintStatus(status,str,0); // Print status only to socket 
-      
-
+	sprintf(str,"ERROR - difference of high voltage [hvdiff:%f] out of range (Vmin: 0.0, Vmax: %f)!\n",hvdiffV,calib->DACToHV(config->DACMax,0,0,0));
+	DoPrompt(str);
+	return 0;
+      }
+      
 
 
@@ -556,5 +553,5 @@
 	  UpdateStatus(board,rbuf);
 	  if (k==(abs((int)(hvdiff/config->fHVMaxDiff)))){
-	    sprintf(str,"board %d: high voltage of chain %d channel %d set to %d | 0X%.4X | %f V\n",hv->GetHVBoard(board)->GetBoardNumber(),chain,channel,hvoltage,hvoltage,calib->DACToHV(hvoltage,hv->GetHVBoard(board)->GetBoardNumber(),chain,channel));
+	    sprintf(str,"OK - board %d: high voltage of chain %d channel %d set to %d | 0X%.4X | %f V\n",hv->GetHVBoard(board)->GetBoardNumber(),chain,channel,hvoltage,hvoltage,calib->DACToHV(hvoltage,hv->GetHVBoard(board)->GetBoardNumber(),chain,channel));
 	    //sprintf(str,"board %d: high voltage of chain %d channel %d set to %d | 0X%.4X\n",hv->GetHVBoard(board)->GetBoardNumber(),chain,channel,hvoltage,hvoltage);
 	    DoPrompt(str);
@@ -563,5 +560,5 @@
 	}
 	else {
-	  sprintf(str,"board %d chain %d channel %d error: could not set hv - check timeout and try again\n",hv->GetHVBoard(board)->GetBoardNumber(), chain, channel);
+	  sprintf(str,"ERROR - board %d chain %d channel %d error: could not set hv - check timeout and try again\n",hv->GetHVBoard(board)->GetBoardNumber(), chain, channel);
 	  DoPrompt(str);
 	  errors++;
@@ -577,14 +574,14 @@
 
       if (errors) {
-	sprintf(str,"warning %d error(s)\n",errors);
+	sprintf(str,"ERROR - warning %d error(s)\n",errors);
 	DoPrompt(str);
       }
       else {
-	sprintf(str,"no error(s)... success!\n");
+	sprintf(str,"OK - no error(s)... success!\n");
 	DoPrompt(str);
       }
     }
     else {
-      sprintf(str,"usage: hvdiff <PXL id> <hv difference>\n");
+      sprintf(str,"ERROR - usage: hvdiff <PXL id> <hv difference>\n");
       DoPrompt(str);
     }
@@ -600,9 +597,9 @@
   else if (Match(status->Param[0], "list")) {
     
-    sprintf(str,"%d HV board(s) active:\n",hv->GetNumberOfBoards());
+    sprintf(str,"OK - %d HV board(s) active:\n",hv->GetNumberOfBoards());
     DoPrompt(str);
 
     for (int i=0;i<hv->GetNumberOfBoards();i++) {
-      sprintf(str,"board %d (%s)\n",(hv->GetHVBoard(i))->GetBoardNumber(),(hv->GetHVBoard(i))->GetSerial());
+      sprintf(str,"OK - board %d (%s)\n",(hv->GetHVBoard(i))->GetBoardNumber(),(hv->GetHVBoard(i))->GetSerial());
       DoPrompt(str);
     }
@@ -634,5 +631,5 @@
 	
 	if (status->Verbose) {
-	  sprintf(str,"file \"%s\" opened\n",Chop(status->Param[1]));
+	  sprintf(str,"OK - file \"%s\" opened\n",Chop(status->Param[1]));
 	  DoPrompt(str);
 	}
@@ -651,5 +648,5 @@
 		board = j;
 		
-		sprintf(str,"found HV settings for board %d (%s)\n",hv->GetHVBoard(board)->GetBoardNumber(),Chop(param[1]));
+		sprintf(str,"OK - found HV settings for board %d (%s)\n",hv->GetHVBoard(board)->GetBoardNumber(),Chop(param[1]));
 		DoPrompt(str);
 		
@@ -666,5 +663,5 @@
 
 		    if (!((nrows)%4)) {
-		      sprintf(str,"updating board %d chain %d\n",hv->GetHVBoard(board)->GetBoardNumber(),chain);
+		      sprintf(str,"OK - updating board %d chain %d\n",hv->GetHVBoard(board)->GetBoardNumber(),chain);
 		      DoPrompt(str);
 		    }
@@ -683,5 +680,5 @@
 			
 			if (status->Verbose) {
-			  sprintf(str,"board %d: high voltage of chain %d channel %d set to %d | 0X%.4X\n",
+			  sprintf(str,"OK - board %d: high voltage of chain %d channel %d set to %d | 0X%.4X\n",
 				  hv->GetHVBoard(board)->GetBoardNumber(),chain,channel,hvoltage,hvoltage);
 			  DoPrompt(str);
@@ -691,5 +688,5 @@
 		      }
 		      else {
-			sprintf(str,"board %d error: could not set HV - check timeout and try again\n",hv->GetHVBoard(board)->GetBoardNumber());
+			sprintf(str,"ERROR - board %d error: could not set HV - check timeout and try again\n",hv->GetHVBoard(board)->GetBoardNumber());
 			DoPrompt(str);
 			errors++;
@@ -709,10 +706,10 @@
 	
 	if (fclose (file)) {
-	  sprintf(str,"error: could not close file \"%s\"\n",Chop(status->Param[1]));
+	  sprintf(str,"ERROR - could not close file \"%s\"\n",Chop(status->Param[1]));
 	  DoPrompt(str);
 	} 
 	else {
 	  if (status->Verbose) {
-	    sprintf(str,"file \"%s\" closed\n",Chop(status->Param[1]));
+	    sprintf(str,"OK - file \"%s\" closed\n",Chop(status->Param[1]));
 	    DoPrompt(str);
 	  }
@@ -720,18 +717,18 @@
 
 	if (nboards!=hv->GetNumberOfBoards()) {
-	  sprintf(str,"warning: could not load HV settings for all connected HV boards\n");
+	  sprintf(str,"ERROR - warning: could not load HV settings for all connected HV boards\n");
 	  DoPrompt(str);
 	}
 	else {
-	  sprintf(str,"success: read HV settings for all connected HV boards\n");
+	  sprintf(str,"OK - success: read HV settings for all connected HV boards\n");
 	  DoPrompt(str);
 	}
 
 	if (errors) {
-	  sprintf(str,"warning %d error(s) => check timeout and try again\n",errors);
+	  sprintf(str,"ERROR - warning %d error(s) => check timeout and try again\n",errors);
 	  DoPrompt(str);
 	}
 	else {
-	  sprintf(str,"no error(s)... success!\n");
+	  sprintf(str,"OK - no error(s)... success!\n");
 	  DoPrompt(str);
 	}
@@ -739,5 +736,5 @@
       }
       else {
-	sprintf(str,"error: could not open file \"%s\"\n",Chop(status->Param[1]));
+	sprintf(str,"ERROR - could not open file \"%s\"\n",Chop(status->Param[1]));
 	DoPrompt(str);
       }
@@ -745,5 +742,5 @@
     }
     else
-      DoPrompt("usage: load <file>\n");
+      DoPrompt("ERROR - usage: load <file>\n");
 
     StartMonitor();
@@ -759,5 +756,5 @@
     if (Match(status->Param[1], "on") && status->Param[1][0]) {
       status->Log = TRUE;
-      sprintf(str,"logging enabled\n");
+      sprintf(str,"OK - logging enabled\n");
       DoPrompt(str);
     }
@@ -765,10 +762,10 @@
     else if (Match(status->Param[1], "off") && status->Param[1][0]) {
       status->Log = FALSE;
-      sprintf(str,"logging disabled\n");
+      sprintf(str,"OK -logging disabled\n");
       DoPrompt(str);
     }
     
     else
-      DoPrompt("usage: log <on>|<off>\n");
+      DoPrompt("ERROR - usage: log <on>|<off>\n");
   
     return 0;
@@ -785,10 +782,10 @@
 
       if (!IsNoDigit(status->Param[1])) {
-	DoPrompt("wrong input format - usage: rate <rate>\n");
+	DoPrompt("ERROR - wrong input format - usage: rate <rate>\n");
 	return 0;
       }
       // Check limits
       else if (atof(status->Param[1]) < MIN_RATE || atof(status->Param[1]) > MAX_RATE) {
-	sprintf(str,"refresh rate out of range (min: %.2f Hz, max: %.2f Hz)!\n",MIN_RATE,MAX_RATE);
+	sprintf(str,"ERROR - refresh rate out of range (min: %.2f Hz, max: %.2f Hz)!\n",MIN_RATE,MAX_RATE);
 	DoPrompt(str);
 	return 0;
@@ -797,5 +794,5 @@
 	StopMonitor();
 	status->fStatusRefreshRate=atof(status->Param[1]);
-	sprintf(str,"status refresh rate set to %.2f Hz\n",status->fStatusRefreshRate);
+	sprintf(str,"OK - status refresh rate set to %.2f Hz\n",status->fStatusRefreshRate);
 	DoPrompt(str);
       }
@@ -805,5 +802,5 @@
     }
     else {
-      sprintf(str,"usage: rate <rate>\n");
+      sprintf(str,"ERROR - usage: rate <rate>\n");
       DoPrompt(str);
     }
@@ -859,5 +856,5 @@
   else if (Match(status->Param[0], "root")) {
     
-    sprintf(str,"starting ROOT... type '.q' to return\n");
+    sprintf(str,"OK - starting ROOT... type '.q' to return\n");
     DoPrompt(str);
     system ("root");
@@ -874,5 +871,5 @@
       
       if (SaveHVSettings(Chop(status->Param[1]))) {
-	sprintf(str,"HV settings written to \"%s\"\n",Chop(status->Param[1]));
+	sprintf(str,"OK - HV settings written to \"%s\"\n",Chop(status->Param[1]));
 	DoPrompt(str);
       }
@@ -889,5 +886,5 @@
       time_now = localtime(&time_now_secs);
       
-      sprintf(buffer,"hvsettings/HV_%04d-%02d-%02d_%02d-%02d-%02d.txt",
+      sprintf(buffer,"OK - hvsettings/HV_%04d-%02d-%02d_%02d-%02d-%02d.txt",
 	      1900 + time_now->tm_year, 
 	      1 + time_now->tm_mon,
@@ -901,5 +898,5 @@
       
       if (SaveHVSettings(buffer)) {
-	sprintf(str,"HV settings successfully written to \"%s\"\n",buffer);
+	sprintf(str,"OK - HV settings successfully written to \"%s\"\n",buffer);
 	DoPrompt(str);
       }
@@ -918,5 +915,5 @@
     
     if (status->state==active) {
-      sprintf(str,"status monitoring is already active\n");
+      sprintf(str,"OK - status monitoring is already active\n");
       DoPrompt(str);
       return 0;
@@ -925,5 +922,5 @@
     StartMonitor();
 
-    sprintf(str,"status monitoring activated\n");
+    sprintf(str,"OK - status monitoring activated\n");
     DoPrompt(str);
 
@@ -953,5 +950,5 @@
     
     if (status->state!=active) {
-      sprintf(str,"status monitoring is already deactivated\n");
+      sprintf(str,"OK - status monitoring is already deactivated\n");
       DoPrompt(str);
       return 0;
@@ -960,5 +957,5 @@
     StopMonitor();
     
-    sprintf(str,"warning: status monitoring deactivated\n");
+    sprintf(str,"ERROR - warning: status monitoring deactivated\n");
     DoPrompt(str);
 
@@ -1137,10 +1134,10 @@
 
       if (!IsNoDigit(status->Param[1])) {
-	DoPrompt("wrong input format - usage: timeout <time>\n");
+	DoPrompt("ERROR - wrong input format - usage: timeout <time>\n");
 	return 0;
       }
       // Check limits
       else if (atof(status->Param[1]) < MIN_TIMEOUT || atof(status->Param[1]) > MAX_TIMEOUT) {
-	sprintf(str,"timeout out of range (min: %.2f s, max: %.2f s)!\n",MIN_TIMEOUT,MAX_TIMEOUT);
+	sprintf(str,"ERROR -timeout out of range (min: %.2f s, max: %.2f s)!\n",MIN_TIMEOUT,MAX_TIMEOUT);
 	DoPrompt(str);
 	return 0;
@@ -1151,5 +1148,5 @@
 	  (hv->GetHVBoard(i))->SetTimeOut((float)atof(status->Param[1]));
 	status->fTimeOut = atof(status->Param[1]);	
-	sprintf(str,"timeout set to %.2f s\n",status->fTimeOut);
+	sprintf(str,"OK - timeout set to %.2f s\n",status->fTimeOut);
 
 	DoPrompt(str);
@@ -1160,5 +1157,5 @@
     }
     else {
-      sprintf(str,"usage: timeout <time>\n");
+      sprintf(str,"ERROR - usage: timeout <time>\n");
       DoPrompt(str);
     }
@@ -1173,5 +1170,5 @@
     double difftime = GetDiffTime(&StartTime);
 
-    sprintf(str,"%d:%02d:%02d\n",(int)difftime/SECONDS_HOUR,((int)difftime/SECONDS_MINUTE)%SECONDS_MINUTE,(int)difftime%SECONDS_MINUTE);
+    sprintf(str,"OK - %d:%02d:%02d\n",(int)difftime/SECONDS_HOUR,((int)difftime/SECONDS_MINUTE)%SECONDS_MINUTE,(int)difftime%SECONDS_MINUTE);
     DoPrompt(str);
 
@@ -1185,10 +1182,10 @@
     if (Match(status->Param[1], "on") && status->Param[1][0]) {
       if (status->Verbose == TRUE) {
-	sprintf(str,"verbosity is already enabled\n");
+	sprintf(str,"OK - verbosity is already enabled\n");
 	DoPrompt(str);
       }
       else {
 	status->Verbose = TRUE;
-	sprintf(str,"verbosity enabled\n");
+	sprintf(str,"OK - verbosity enabled\n");
 	DoPrompt(str);
       }
@@ -1197,10 +1194,10 @@
     else if (Match(status->Param[1], "off") && status->Param[1][0]) {
       if (status->Verbose == FALSE) {
-	sprintf(str,"verbosity is already disabled\n");
+	sprintf(str,"OK - verbosity is already disabled\n");
 	DoPrompt(str);
       }
       else {
 	status->Verbose = FALSE;
-	sprintf(str,"verbosity disabled\n");
+	sprintf(str,"OK - verbosity disabled\n");
 	DoPrompt(str);
       }
@@ -1208,5 +1205,5 @@
     
     else
-      DoPrompt("usage: verbose <on>|<off>\n");
+      DoPrompt("ERROR - usage: verbose <on>|<off>\n");
   
     return 0;
@@ -1227,5 +1224,5 @@
       if (tolower(status->Param[1][0])=='x' && strlen(status->Param[1])>2) {
 	if (sPrintHex2Dec(Chop(status->Param[1]+1),&voltage)!=0) {
-	    DoPrompt("error: wrong input format - usage: vref <voltage>\n");
+	    DoPrompt("ERROR - wrong input format - usage: vref <voltage>\n");
 	    return 0;
 	}
@@ -1234,5 +1231,5 @@
       else if (tolower(status->Param[1][0])=='b' && strlen(status->Param[1])>2) {
 	if (sPrintBin2Dec(Chop(status->Param[1]+1),&voltage)!=0) {
-	  DoPrompt("wrong input format - usage: vref <voltage>\n");
+	  DoPrompt("ERROR - wrong input format - usage: vref <voltage>\n");
 	  return 0;
 	}
@@ -1243,5 +1240,5 @@
       // Wrong input format
       else {
-	DoPrompt("wrong input format - usage: vref <voltage>\n");
+	DoPrompt("ERROR - wrong input format - usage: vref <voltage>\n");
 	return 0;
       }
@@ -1249,5 +1246,5 @@
       // Check limits
       if (voltage>0X3FFF || voltage <0) {
-	DoPrompt("reference voltage out of range (Vmin: 0, Vmax: 16383)!\n");
+	DoPrompt("ERROR - reference voltage out of range (Vmin: 0, Vmax: 16383)!\n");
 	return 0;
       }
@@ -1259,5 +1256,5 @@
 	for (int j=status->FirstChain;j<=status->LastChain;j++) {
 	  if (((hv->GetHVBoard(i))->SetVRef(stdout,j,voltage,rbuf,status->Verbose)==1)) {
-	    sprintf(str,"board %d: reference voltage of chain %d set to %d | 0X%.4X\n",hv->GetHVBoard(i)->GetBoardNumber(),j,voltage,voltage);
+	    sprintf(str,"OK - board %d: reference voltage of chain %d set to %d | 0X%.4X\n",hv->GetHVBoard(i)->GetBoardNumber(),j,voltage,voltage);
 	    status->VRef[i][j]=voltage;
 	    DoPrompt(str);
@@ -1266,5 +1263,5 @@
 	    DoPrompt(str);
 	  } else {
-	    sprintf(str,"board %d error: could not set vref - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
+	    sprintf(str,"ERROR - board %d error: could not set vref - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
 	    DoPrompt(str);
 	  }
@@ -1274,5 +1271,5 @@
     }
     else {
-      sprintf(str,"usage: vref <voltage>\n");
+      sprintf(str,"ERROR - usage: vref <voltage>\n");
       DoPrompt(str);
     }
@@ -1361,7 +1358,7 @@
     
     if (strchr(status->Param[0],'\n') == 0)
-      sprintf(str,"unknown command: %s\n",status->Param[0]);
+      sprintf(str,"ERROR - unknown command: %s\n",status->Param[0]);
     else
-      sprintf(str,"unknown command: %s",status->Param[0]);
+      sprintf(str,"ERROR - unknown command: %s",status->Param[0]);
     
     DoPrompt(str);
@@ -1385,5 +1382,5 @@
   timeinfo = localtime(&rawtime); // Get local time
   fflush(stdout);
-  sprintf(str,"current date/time is: %s",asctime(timeinfo));
+  sprintf(str,"OK - current date/time is: %s",asctime(timeinfo));
   DoPrompt(str);
 
@@ -1391,5 +1388,12 @@
 
 void ProcessIO::DoPrompt(char* str) {
- 
+  if (str!=NULL) {
+    if (status->Socket != -1) // Print status string to socket if open
+      write(status->Socket,str,strlen(str)+1);
+  }
+  else {
+    if (status->Socket != -1) // Print status string to socket if open
+      write(status->Socket,"OK\n",3);
+  }
   if (str!=NULL) {
     if (status->NumHVBoards == 0) {
@@ -1470,6 +1474,4 @@
      }
   }
-
-  
 }
 
@@ -1592,5 +1594,5 @@
 
   if (status->NumHVBoards==0)
-    DoPrompt("no HV boards available!\n");
+    DoPrompt("ERROR - no HV boards available!\n");
 
   return status->NumHVBoards;
@@ -1603,8 +1605,8 @@
 
   if (hv->GetNumberOfBoards())
-    printf("Initialization:\n");
+    printf("OK - Initialization:\n");
 
   for (int i=0;i<hv->GetNumberOfBoards();i++) {
-    printf(" HV board %d (%s):\n",hv->GetHVBoard(i)->GetBoardNumber(),hv->GetHVBoard(i)->GetSerial());
+    printf("OK - HV board %d (%s):\n",hv->GetHVBoard(i)->GetBoardNumber(),hv->GetHVBoard(i)->GetSerial());
     nb+=hv->GetHVBoard(i)->Init(status->Verbose);
   }
@@ -1662,5 +1664,5 @@
 
     if ((hv->GetHVBoard(i))->GetStatus(stdout,rbuf,FALSE)!=1) {
-      sprintf(str,"board %d error: could not read status - check timeout and status refresh rate...",hv->GetHVBoard(i)->GetBoardNumber());
+      sprintf(str,"ERROR - board %d error: could not read status - check timeout and status refresh rate...",hv->GetHVBoard(i)->GetBoardNumber());
       PrintMessage(str);      
     }
@@ -1669,5 +1671,5 @@
     
     if (status->MR[i]) {
-      sprintf(str,"warning: manual reset of board %d!",hv->GetHVBoard(i)->GetBoardNumber());
+      sprintf(str,"ERROR - warning: manual reset of board %d!",hv->GetHVBoard(i)->GetBoardNumber());
       PrintMessage(str);      
       StopMonitor();
@@ -1678,5 +1680,5 @@
     
     if (!status->isok[i]) {
-      sprintf(str,"error: wrap counter mismatch board %d (%d,%d)!",hv->GetHVBoard(i)->GetBoardNumber(),status->WC[0][i],status->WC[1][i]);
+      sprintf(str,"ERROR - wrap counter mismatch board %d (%d,%d)!",hv->GetHVBoard(i)->GetBoardNumber(),status->WC[0][i],status->WC[1][i]);
       PrintMessage(str);      
     }
@@ -1684,5 +1686,5 @@
     for (int j=0;j<MAX_NUM_CHAINS;j++) 
       if (status->OC[i][j]) {
-	sprintf(str,"warning: overcurrent in chain %d of board %d!",j,hv->GetHVBoard(i)->GetBoardNumber());
+	sprintf(str,"ERROR - warning: overcurrent in chain %d of board %d!",j,hv->GetHVBoard(i)->GetBoardNumber());
 	PrintMessage(str);      
 	ResetBoard(i);
@@ -1697,5 +1699,5 @@
   for (int i=status->FirstBoard;i<=status->LastBoard;i++) {
     if ((hv->GetHVBoard(i))->Reset(stdout,rbuf,status->Verbose)==1) {
-      sprintf(str,"software reset done board %d\n",hv->GetHVBoard(i)->GetBoardNumber());
+      sprintf(str,"OK - software reset done board %d\n",hv->GetHVBoard(i)->GetBoardNumber());
       DoPrompt(str);
       UpdateStatus(i,rbuf);
@@ -1704,5 +1706,5 @@
     }
     else {
-      sprintf(str,"board %d error: could not reset - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
+      sprintf(str,"ERROR - board %d error: could not reset - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
 	DoPrompt(str);
     }    
@@ -1716,5 +1718,5 @@
   for (int i=0;i<hv->GetNumberOfBoards();i++) {
     if ((hv->GetHVBoard(i))->Reset(stdout,rbuf,status->Verbose)==1) {
-      sprintf(str,"software reset done board %d\n",hv->GetHVBoard(i)->GetBoardNumber());
+      sprintf(str,"OK - software reset done board %d\n",hv->GetHVBoard(i)->GetBoardNumber());
       DoPrompt(str);
       UpdateStatus(i,rbuf);
@@ -1723,5 +1725,5 @@
     }
     else {
-      sprintf(str,"board %d error: could not reset - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
+      sprintf(str,"ERROR - board %d error: could not reset - check timeout and try again\n",hv->GetHVBoard(i)->GetBoardNumber());
       DoPrompt(str);
     }    
@@ -1734,5 +1736,5 @@
     
   if ((hv->GetHVBoard(i))->Reset(stdout,rbuf,status->Verbose)==1) {
-    sprintf(str,"software reset done board %d",hv->GetHVBoard(i)->GetBoardNumber());
+    sprintf(str,"OK - software reset done board %d",hv->GetHVBoard(i)->GetBoardNumber());
     PrintMessage(str);
     UpdateStatus(i,rbuf);
@@ -1741,5 +1743,5 @@
   }
   else {
-    sprintf(str,"board %d error: could not reset - check timeout and try again",hv->GetHVBoard(i)->GetBoardNumber());
+    sprintf(str,"ERROR - board %d error: could not reset - check timeout and try again",hv->GetHVBoard(i)->GetBoardNumber());
     PrintMessage(str);
   }    
@@ -1761,5 +1763,5 @@
 
   if ((fptr = fopen(filename,"w")) == NULL) {
-    sprintf(str,"error: could not open file \"%s\"\n", filename);
+    sprintf(str,"ERROR - could not open file \"%s\"\n", filename);
     return 0;
   }
