
void print_temp(signed int value) {	// should be signed int for pic
	int count;

	if ( value < 0 ) {
		putchar('-');
		value ^= 0xFF;	// invert two's complement sign
		value++;
	} else {
		
		count=0;
		while ( value >= 100 ) {
			value -= 100;
			count++;
		}
		putchar('0' + count);
	
	}

	count=0;
	while ( value >= 10 ) {
		value -= 10;
		count++;
	}

	putchar('0' + count);	/* tens */
	putchar('0' + value); 	/* ones */

	/* set the globals for the temperature */
	temptensdigit = count;
	temponesdigit = value;

}


void print_hex(byte value) {	// should be byte for pic
	int count;

	count=0;
	while ( value >= 16 ) {
		value -= 16;
		count++;
	}
	if ( count < 10 )
		putchar('0' + count);
	else
		putchar('A' + count-10);

	if ( value < 10 )
		putchar('0' + value);
	else
		putchar('A' + value-10);
}

#ifndef hi
#define hi(x) (*(&x+1))
#endif

/* untested */
void print_lhex(unsigned long value) {	// should be unsigned long for pic
	print_hex(hi(value));
	print_hex(value);
}


void print_int(byte value, short zeros) { // should be byte,bit for pic
	int count;

	count=0;
	while ( value >= 100 ) {
		value -= 100;
		count++;
	}
	if ( count || zeros )
		putchar('0' + count);

	count=0;
	while ( value >= 10 ) {
		value -= 10;
		count++;
	}
	if ( count || zeros )
		putchar('0' + count);	/* tens */

	putchar('0' + value); 	/* ones */
}

void print_bcd(byte value, short zeros) { // should be byte,bit for pic
	int i;
	
	i = value >> 4;		/* get rid of low order nibble */
	putchar('0' + i); 
	
	i = value & 0b00001111;	/* get rid of high order nibble */
	putchar('0' + i); 
}


void print_lint(unsigned long value, short zeros) {	// should be unsigned long for pic
	print_int(hi(value),zeros);
	print_int(value,zeros);
}

