#ifndef print
#define print usart_print
#endif
volatile unsigned char bcdnumber[10];

void terminal_clear(void) {
			bcdnumber[0] = 0x1b;
			bcdnumber[1] = '[';
			bcdnumber[2] = '2';
			bcdnumber[3] = 'J';
			bcdnumber[4] = 0;
			print(bcdnumber);
}

void terminal_gotoxy(unsigned char x, unsigned char y) {
			bcdnumber[0] = 0x1b;
			bcdnumber[1] = '[';
			bcdnumber[2] = (y+48);
			bcdnumber[3] = ';';
			bcdnumber[4] = (x+48);
			bcdnumber[5] = 'f';
			bcdnumber[6] = 0;
			print(bcdnumber);
}

void terminal_printxy(uint8_t x, uint8_t y, char *str) {
	terminal_gotoxy(x,y);
	print(str);
}

void bin2bcd(unsigned short binaryNumber,uint8_t digits)
{
	unsigned char index;
//	bcdnumber[digits+1]=0;
	for (index=0; index<digits; index++)
	{
		if (binaryNumber!=0)
		{
			bcdnumber[(digits-1)-index] = binaryNumber%10;
			binaryNumber = binaryNumber/10;
		} else {bcdnumber[(digits-1)-index]=0;}
	}
}

void terminal_print_byte(unsigned char b)
{
	uint8_t i;
	bin2bcd(b,3);
	for(i=0;i<3;i++) bcdnumber[i] += 48;
	bcdnumber[i]=0;
	print(bcdnumber);
}

void terminal_print_short(unsigned short b)
{
	uint8_t i;
	bin2bcd(b,5);
	for(i=0;i<5;i++) bcdnumber[i] += 48;
	bcdnumber[i]=0;
	print(bcdnumber);
}
