/***********************************************************************/
/*                                                                     */
/*  SERIAL.C:  Low Level Serial Routines                               */
/*                                                                     */
/***********************************************************************/

#include "defs.h"


void InitSerial(void)
{
  GP1CON = 0x011;				// Setup tx & rx pins on P1.0 and P1.1

  // Setting up UART at 9600 bps for CD = 0
  COMCON0 = 0x80;				// Setting DLAB
//  COMDIV0 = 0x88;				// 
  COMDIV0 = 0x11;				// 
  COMDIV1 = 0x00;
  COMCON0 = 0x03;				// Clearing DLAB, one STOP bit

  rprintf_devopen(putchar);
}

int putchar(int ch)
{
  GP0DAT |= TXEN;
  COMTX = ch;
  while(!(COMSTA0 & 0x040));
  GP0DAT &= ~TXEN;

  return ch;
}


int write (int file, char * ptr, int len)
{
  int i;

  for (i = 0; i < len; i++)
    if (*ptr)
      putchar (*ptr++);
		else
		  break;
  return i;
}

int getchar (void)
{                      /* Read character from Serial Port */
 	while(!(COMSTA0 & 0x01));
 	return (COMRX);
}

int received(void)
{
	return (COMSTA0 & 0x01);
}
