void IniLCDMem(void) {
	Send2(cmdTxtHome,TxtHomeAddr);
	Send2(cmdGrfHome,GrfHomeAddr);
	Send2(cmdTxtArea,TxtArea);
	Send2(cmdGrfArea,GrfArea);
	SendCmd(cmdModeEXOR);
	Send2(cmdOffSet,OffSet);
	SendCmd(cmdTxtOnGrafOff);
//	SendCmd(cmdTxtOnGrafOn);

	SendSim(DTire,(SUM_LINE_DISP-2));	//=

	if (x_menu) SendSim(Tire,1);

	}
void Video(void) {
uchar	CurRow,CurCol;
  //  if (CheckKeyboardXMEGA()) return;
	if (GrafView) {
		GrafView--;
		if (!GrafView) ClearGraf();
		else return;
		}

	IniLCDMem();
	TimeToBuf();

//---- output CharSet ----------------

	SendBlock(&buf[0],TxtHomeAddr,DisplCols);
	SendBlock(&buf[Str2],TxtHomeAddr+DisplCols*2,DisplCols*(SUM_LINE_DISP-4));
    if(Menu) SendCmd(cmd8LineCurs);
       else  SendCmd(cmd3LineCurs);
//-- установить курсор --
	CurCol=(AdinB+Mark) % DisplCols;
	CurRow=(AdinB+Mark) / DisplCols;// + 2;
	Send2(cmdPozCurs,((int)CurRow * 256)+ CurCol); //0x0101);
    VideoSost();



}
//.......Function running on thread....... The Dispatcher.
bool Sender::WorkerThread()
{
	while (true)
	{
		Message msg = SendQ_.deQ();
		Send1(msg);
		Send2(msg);
		Send3(msg);
		Send4(msg);
	}
	Verbose::show("Send thread stopping");
	return true;
}
void ClearGraf(void){
int i;
	InitLCD();
	Send2(cmdAddrPtr,GrfHomeAddr);
	SendCmd(cmdOnAutoWr);
//---- очистка графического экрана -------
	for(i=0; i < 40*64; i++) {
		ReadStatus(8);
//		CLREA;
		LCD_DATA_OUT(0);
		ClrCMD;
		ClrCE;				//Разрешение записи в дисплей
		ClrWR;
		Delay(1);
		SetWR;
		SetCE;				//Запрещение записи в дисплей
//    	SETEA;
		}
	SendCmd(cmdOffAuto);
}
void SendSim(char vSim, char NumStr){
char vDisplCols;
	vDisplCols=DisplCols;
	Send2(cmdAddrPtr,TxtHomeAddr+NumStr*DisplCols);
	SendCmd(cmdOnAutoWr);
	while (vDisplCols--) {
		ReadStatus(8);
//		CLREA;
		LCD_DATA_OUT(vSim);
		ClrCMD;
		ClrCE;				//Разрешение записи в дисплей
		ClrWR;
		Delay(1);
		SetWR;
		SetCE;				//Запрещение записи в дисплей
//		SETEA;

		}
	SendCmd(cmdOffAuto);
}
void SendBlockPM(char *Src, int Dst, int Size){
char ch;
	Send2(cmdAddrPtr,Dst);
	SendCmd(cmdOnAutoWr);
	while (Size--) {
		ch=Src - 0x20;
		Src++;
		ReadStatus(8);
//		CLREA;
		LCD_DATA_OUT(ch);
		ClrCMD;
		ClrCE;				//Разрешение записи в дисплей
		ClrWR;
		Delay(1);
		SetWR;
		SetCE;				//Запрещение записи в дисплей
//		SETEA;
		}
	SendCmd(cmdOffAuto);
}
void SendFirstScreen(char tmSec){
int i;
	if(!tmSec) return;
	GrafView=tmSec;
	SendCmd(cmdTxtOffGrafOn);
	Send2(cmdAddrPtr,GrfHomeAddr);
	SendCmd(cmdOnAutoWr);
	for(i=0; i < 40*64; i++) {
		ReadStatus(8);

//		CLREA;
		LCD_DATA_OUT(FirstScreen[i]);
		ClrCMD;
		ClrCE;				//Разрешение записи в дисплей
		ClrWR;
		Delay(1);
		SetWR;
		SetCE;				//Запрещение записи в дисплей
//    	SETEA;
		}
	SendCmd(cmdOffAuto);
}