
/*
 * Basic low-level modem functions for big board.
 */
#include "yam.h"

userinit()
{
	setbaud(1200);
	outp(SPORT, 4);		/* select SIO reg 4 */
	outp(SPORT, R16CLCK | R1STOP);	/* default config. */
	outp(SPORT, 3);		/* select SIO reg 3 */
	outp(SPORT, R8BIT | RENABLE);
	outp(SPORT, 5);		/* select SIO reg 5 */
	outp(SPORT, XDTR | X8BIT | XENABLE | XRTS);
}

setbaud(nbaud)
unsigned nbaud;
{
	unsigned baudchar;
	switch(nbaud)
	{
		case 50: baudchar = 0;
			break;
		case 75: baudchar = 1;
			break;
		case 110: baudchar = 2;
			  break;
		case 150: baudchar = 4;
			  break;
		case 300: baudchar = 5;
         		  break;
		case 600: baudchar = 6;
			 break;
		case 1200: baudchar = 7;
			  break;
		case 1800: baudchar = 8;
			  break;
		case 2000: baudchar = 9;
			  break;
		case 2400: baudchar = 10;
			   break;
		case 3600: baudchar = 11;
			  break;
		case 4800: baudchar = 12;
			   break;
		case 7200: baudchar = 13;
			  break;
		case 9600: baudchar = 14;
			   break;
		case 19200: baudchar = 15;
			  break;
		default: printf("Default is 1200\n");
			baudchar = 7;

	}
	outp (BAUDPORT, baudchar);
}

sendbrk()
{
	outp(SPORT,XDTR | XENABLE | X8BIT | XRTS | XBREAK);
	sleep(10);
	outp(SPORT,XDTR | XENABLE | X8BIT | XRTS );
}

bye()
{
	onhook();
}

setparams()
{
}


onhook()
{
	outp(SPORT,5);	/* SIO reg 5 */
	outp(SPORT, 0); /* set all xmit vars to 0 (reset DTR to off)*/
}

offhook()
{
	userinit();
}


wait10(times)
int times;
{
}

readline(decisecs)

{
	if(MIREADY)
		goto getit;
	while(--decisecs>=0) {
		if(MIREADY)
			goto getit;
		if(CDO)
			return TIMEOUT;
		if(MIREADY)
			goto getit;
		if(CIREADY) {
			CICHAR;		/* dismiss character */
			return TIMEOUT;
		}
		if(MIREADY)
			goto getit;
		for(Timeout=T1pause; --Timeout; )
		if(MIREADY) {
getit:
				return MICHAR;
		}
	}
	return TIMEOUT;
}

sendline(data)
char data;

{
	while(!MOREADY)
		;
	outp(MODATA, data);
}

purgeline()
{
	while(MIREADY)
		MICHAR;
}

readbaud()
{
}

dial()
{
}