DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T c

⟦9a7ec1db7⟧ TextFile

    Length: 4251 (0x109b)
    Types: TextFile
    Names: »cursor.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Mpss/cursor.c« 

TextFile


/********VERSION 1.4!!! (Files from different Versions are INCOMPATIBLE!*******/
/*******************************************************************************
********************************************************************************
********************************************************************************

PERMISSION TO COPY THIS SOFTWARE IS HEREBY GIVEN BY THE AUTHOR PROVIDED THAT
THIS LEADING MESSAGE IS INCLUDED IN ALL OF THE RELEVANT SOURCE FILES.

		P. SCHMITZ, UNIVERSITY OF KEELE, MAY 1988.


********************************************************************************
********************************************************************************
*******************************************************************************/

#include "header.h"

#define SPACE "                                                                                \n"

slaveoutc(c)
char c;
{
write(1,&c,1);
}

outc(c)
char c;
{
write(v,&c,1);
}

gettermcapentry(cl,cm,bon,boff)
char *cl,*cm,*bon,*boff;
{
char *CL,*CM,*BON,*BOFF;
	switch(tgetent(bp,getenv("TERM")))
	{
	case -1 :
		fprintf(stderr,"Cannot open your termcap file!!\n");
		return(0);
		break;
	case 0 : 
		fprintf(stderr,"Your terminal has no entry in /etc/termcap..sorry!!\n");
		return(0);
		break;
	case 1 :
fprintf(stderr,"                Found entry for automatic terminal option\n");
		break;
	default:
		fprintf(stderr,"get_termcap_entry:Somethings wrong!!\n");
		return(0);
		break;
	}

	termp=tbp;
	if ((CM=tgetstr("cm",&termp))==NULL) 
			{
			fprintf(stderr,"cm problems.\n");
			return(0);
			}

	if ((CL=tgetstr("cl",&termp))==NULL) 
			{
			fprintf(stderr,"cl problems.\n");
			return(0);
			}

	BON=tgetstr("md",&termp);

	BOFF=tgetstr("me",&termp);
	
	strcpy(cl,CL);
	strcpy(cm,CM);
	strcpy(bon,BON);
	strcpy(boff,BOFF);
	return(1);
}


assignterminal(tty_type,cl,cm)
int tty_type;
char *cl,*cm;
{
	switch(tty_type)
	{
	case 1:
		cm[0] = '\033';
		cm[1] = 'Y';
		cm[2] = 0+32;
		cm[3] = 0+32;
		cl[0] = '\033';
		cl[1] = 'w';
		break;
	case 2: cm[0] = '\033';
		cm[1] = '=';
		cm[2] = 0+32;
		cm[3] = 0+32;
		cl[0] = '\033';
		cl[1] = '*';
		break;
	 case 3:
		cm[0]='\033';
		cm[1]='[';
		cm[2]='0';
		cm[3]='0';
		cm[4]=';';
		cm[5]='0';
		cm[6]='0';
		cm[7]='H';
		cl[0]='\033';
		cl[1]='[';
		cl[2]='2';
		cl[3]='J';
		break;
	 case 4:
		cm[0]='\033';
		cm[1]='[';
		cm[2]='0';
		cm[3]='0';
		cm[4]=';';
		cm[5]='0';
		cm[6]='0';
		cm[7]='H';
		cl[0]='N';
		break;
	  default:
		break;
	  }
}

/***************************************************************************
Position cursor routines!!!-> 1) VT200/ADDS 2)Televideo 910/905/ADM3 3) VT100
4)SUN's
****************************************************************************/

poscursslave(cm,tty_type,x,y)
char *cm;
int tty_type,x,y;
{
char *b;
switch(tty_type){
 case 0:
	b=tgoto(cm,x,y);
	tputs(b,1,slaveoutc);
	break;	
 case 1:
	cm[2]=y+32;
	cm[3]=x+32;
	write(1,cm,4);
	break;
  case 2:
	cm[2] = y+32;
	cm[3] = x+32;
	write(1,cm,4);
	break;
  case 3:
  case 4:
	++y;
	cm[5]=x/10+'0';
	cm[6]=x%10+'0';
	cm[2]=y/10+'0';
	cm[3]=y%10+'0';
	write(1,cm,10);
	break;
  default:
	break;
  }
}

poscurs(cp,x,y)
register struct player *cp;
register int x,y;
{
char *b;
switch(cp->tty_type){
	
 case 0:
	v=cp->fd;
	b=tgoto(cp->cm,x,y);
	tputs(b,1,outc);
	break;
 case 1:
	cp->cm[2]=y+32;
	cp->cm[3]=x+32;
	write(cp->fd,cp->cm,4);
	break;
  case 2:
	cp->cm[2] = y+32;
	cp->cm[3] = x+32;
	write(cp->fd,cp->cm,4);
	break;
  case 3:
  case 4:
	++y;
	cp->cm[5]=x/10+'0';
	cp->cm[6]=x%10+'0';
	cp->cm[2]=y/10+'0';
	cp->cm[3]=y%10+'0';
	write(cp->fd,cp->cm,10);
	break;
  default:
	break;
  }
}

newgame()
{
srand((time(0)%10));
}
/*
 *beep() Routine to emit a beep
 */

beep(cp)
register struct player *cp;
{
 if (cp->beeping) 
 	write(cp->fd,"\7",1);
}



/*
*to clear the screen
*/
clrscreen(cp)
register struct player *cp;
{

if (cp->tty_type==0)
	{
	v=cp->fd;
	tputs(cp->cl,1,outc);
	}
	else
{
if (cp->cl[0]=='N')
	{
	for(i=0;i<25;++i) write(cp->fd,SPACE,81); 
	} else
	write(cp->fd,cp->cl,10);
}
}

clrscreenslave(cl,tty_type)
char *cl;
int tty_type;
{

if (tty_type==0)
	tputs(cl,1,slaveoutc);
	else
	{
	if (cl[0]=='N')
		{
		for(i=0;i<27;++i) write(1,SPACE,81); 
		} else
		write(1,cl,10);
	}
}