⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cg6test.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
	for (i = 0; i <= 15; i++ )	{		y = i * th;		/* on last set of rops, factor in the left over		 * pixels to the bottom of the screen.		 */		if (i == 15)			th = height - th*15;		for (j = 0; j <= 15; j++ )		{			if (j == 15)				tw = width - tw*15;			x = j * tw;			pr_rop(prfd,x,y,tw,th,PIX_SRC|PIX_COLOR(k++),								0,0,0);		}	}	/* clear the color map */	for (i = 0; i <= 255; i++ )		red1[i] = 0; grn1[i] = 0; blu1[i] = 0;	blu1[255] = 1;	/* so that foreground and background are different.			 * otherwise it will default to the suntools white.			 * it will look black to the naked eye.			 */	pr_putcolormap(prfd, 0, 256, red1, grn1, blu1);	return(0);}testcolormap(){	unsigned int planes = 0xff;	int i, j, k, knt;	/* set certain color map locations with data */	/*	 * gray scale forward	 */	for (i = 0; i <= 255; i++)	{		red1[i] = i; grn1[i] = i; blu1[i] = i;	}	pr_putcolormap(prfd, 0, 256, red1, grn1, blu1);	pr_getcolormap(prfd, 0, 256, red2, grn2, blu2);	checkmap();	DELAY(10000);	/*	 * gray scale backward	 */	for (i = 0, j = 255; i <= 255; i++, j--)	{		red1[i] = j; grn1[i] = j; blu1[i] = j;	}	pr_putcolormap(prfd, 0, 256, red1, grn1, blu1);	pr_getcolormap(prfd, 0, 256, red2, grn2, blu2);	checkmap();	DELAY(10000);	/*	 * 5's and A's	 */	for (i = 0; i <= 255; i += 2)	{		red1[i] = 0xaa; red1[i+1] = 0x55;		grn1[i] = 0x55; grn1[i+1] = 0xaa;		blu1[i] = 0xaa; blu1[i+1] = 0x55;	}	pr_putcolormap(prfd, 0, 256, red1, grn1, blu1);	pr_getcolormap(prfd, 0, 256, red2, grn2, blu2);	checkmap();	DELAY(10000);	/*	 * A's and 5's	 */	for (i = 0; i <= 255; i += 2)	{		red1[i] = 0x55; red1[i+1] = 0xaa;		grn1[i] = 0xaa; grn1[i+1] = 0x55;		blu1[i] = 0x55; blu1[i+1] = 0xaa;	}	pr_putcolormap(prfd, 0, 256, red1, grn1, blu1);	pr_getcolormap(prfd, 0, 256, red2, grn2, blu2);	checkmap();	DELAY(10000);	/*	 * zoom through colors	 * the colors will be	 *	 *	red to cyan	 *	green to magenta	 *	blue to yellow	 *	 *	cyan to white	 *	magenta to white	 *	yellow to white	 *	 *	white to red	 *	white to green	 *	white to blue	 *	 *	red to black	 *	green to black	 *	blue to black	 *	 *	black to cyan	 *	black to magenta	 *	black to yellow	 *	 *	white to black	 *	 */	/*	red to cyan	*/	k = 0; i = 0; j = 255;	knt = 16;	do {		red1[k] = j; grn1[k] = i; blu1[k] = i;		k++;		i = k * 16 - 1;		j = 255 - i;	} while (k < knt);	/*	green to magenta	*/	i = 0; j = 255;	knt += 16;	do {		red1[k] = i; grn1[k] = j; blu1[k] = i;		k++;		i = k * 16 - 1;		j = 255 - i;	} while (k < knt);	/*	blue to yellow	*/	i = 0; j = 255;	knt += 16;	do {		red1[k] = i; grn1[k] = i; blu1[k] = j;		k++;		i = k * 16 - 1;		j = 255 - i;	} while (k < knt);	/*	cyan to white	*/	i = 0;	knt += 16;	do {		red1[k] = i; grn1[k] = 255; blu1[k] = 255;		k++;		i = k * 16 - 1;	} while (k < knt);	/*	majenta to white	*/	i = 0;	knt += 16;	do {		red1[k] = 255; grn1[k] = i; blu1[k] = 255;		k++;		i = k * 16 - 1;	} while (k < knt);	/*	yellow to white	*/	i = 0;	knt += 16;	do {		red1[k] = 255; grn1[k] = 255; blu1[k] = i;		k++;		i = k * 16 - 1;	} while (k < knt);	/*	white to red	*/	j = 255;	knt += 16;	do {		red1[k] = 255; grn1[k] = j; blu1[k] = j;		k++;		j = 255 - k * 16 - 1;	} while (k < knt);	/*	white to green	*/	j = 255;	knt += 16;	do {		red1[k] = j; grn1[k] = 255; blu1[k] = j;		k++;		j = 255 - k * 16 - 1;	} while (k < knt);	/*	white to blue	*/	j = 255;	knt += 16;	do {		red1[k] = j; grn1[k] = j; blu1[k] = 255;		k++;		j = 255 - k * 16 - 1;	} while (k < knt);	/*	red to black	*/	j = 255;	knt += 16;	do {		red1[k] = j; grn1[k] = 0; blu1[k] = 0;		k++;		j = 255 - k * 16 - 1;	} while (k < knt);	/*	green to black	*/	j = 255;	knt += 16;	do {		red1[k] = 0; grn1[k] = j; blu1[k] = 0;		k++;		j = 255 -  k * 16 - 1;	} while (k < knt);	/*	blue to black	*/	j = 255;	knt += 16;	do {		red1[k] = 0; grn1[k] = 0; blu1[k] = j;		k++;		j = 255 - k * 16 - 1;	} while (k < knt);	/*	black to cyan	*/	i = 0;	knt += 16;	do {		red1[k] = 0; grn1[k] = i; blu1[k] = i;		k++;		i = k * 16 - 1;	} while (k < knt);	/*	black to magenta	*/	i = 0;	knt += 16;	do {		red1[k] = i; grn1[k] = 0; blu1[k] = i;		k++;		i = k * 16 - 1;	} while (k < knt);	/*	black to yellow	*/	i = 0;	knt += 16;	do {		red1[k] = i; grn1[k] = i; blu1[k] = 0;		k++;		i = k * 16 - 1;	} while (k < knt);	/*	white to black	*/	j = 255;	knt += 16;	do {		red1[k] = j; grn1[k] = j; blu1[k] = j;		k++;		j = 255 - k * 16 - 1;	} while (k < knt);	pr_putcolormap(prfd, 0, 256, red1, grn1, blu1);	pr_getcolormap(prfd, 0, 256, red2, grn2, blu2);	checkmap();	DELAY(10000);	return(0);}static char *dblarray[] = {			"read memory set A",			"read memory set B",			"read A, write to A and B",			"",			};char *dblptr;checkmap(){	int i;	dblptr = dblarray[3];	for (i = 0; i <= 255; i++)	{		if (red1[i] != red2[i] || simulate_error == RED_FAILED)		{	  sprintf(msg, "Colormap error - red, loc = %d, exp = %d, actual = %d.",				i, red1[i], red2[i]);			errorprint(-RED_FAILED, msg);		}		if (grn1[i] != grn2[i] || simulate_error == GREEN_FAILED)		{	  sprintf(msg, "Colormap error - green, loc = %d, exp = %d, actual = %d.",				i, grn1[i], grn2[i]);			errorprint(-GREEN_FAILED, msg);		}		if (blu1[i] != blu2[i] || simulate_error == BLUE_FAILED)		{	  sprintf(msg, "Colormap error - blue, loc = %d, exp = %d, actual = %d.",				i, blu1[i], blu2[i]);			errorprint(-BLUE_FAILED, msg);		}	}	return(0);}enable_vid(name)char	*name;{	int fd;	int vid;	vid = FBVIDEO_ON;	fd = open(name, O_RDWR);	if (fd > 0) {		ioctl(fd, FBIOSVIDEO, &vid);		close(fd);	} else		printf("warning, could not turn on video\n");	return(0);}errorprint(err, msg)int err;char *msg;{	char *msg1[200];	if(testing_secondary_buffer ==TRUE)	sprintf(msg1, "%s Testing hidden buffer. (Buffer 1).", msg);	else 	sprintf(msg1, "%s Testing visible buffer. (Buffer 0). ", msg);	send_message(err, FATAL_MSG, msg1);	return (0);}syserror(err, c)int err;char *c;{	perror(c);	sprintf(msg, "Couldn't create new screen for '%s'.",		DEVICE);		send_message(err, FATAL_MSG, msg);	return (0);}struct       sgttyb  ttybuf;int origsigs;short	orig_sg_flags;	/* original mode flags for stdin */finish1(){        u_long *tec, *fbc;         tec = (u_long *) cg6_d(prfd)->cg6_tec;        fbc = (u_long *) cg6_d(prfd)->cg6_fbc;         if (tec_fbc_test_flag==TRUE)        {       *tec = tmptec;                *fbc = tmpfbc;            tec_fbc_test_flag=FALSE;        }        finish();}setup_signals(){	/* set up signals for non-blocking	 * input.  If this is not done,	 * the windows will have a queue of	 * input events to handle.	 */	ioctl(0, TIOCGETP, &ttybuf);	orig_sg_flags = ttybuf.sg_flags;/* save orig mode flags for stdin */	ttybuf.sg_flags |= CBREAK;      /* non-block mode */	ttybuf.sg_flags &= ~ECHO;       /* no echo */	ioctl(0, TIOCSETP, &ttybuf);	origsigs = sigsetmask(0);	signal(SIGINT, finish);  /* To be replaced by finish1 ? */	signal(SIGQUIT, finish);	signal(SIGHUP, finish);	return (0);}reset_signals(){	ioctl(0, TIOCGETP, &ttybuf);	ttybuf.sg_flags = orig_sg_flags; /* restore orig mode flags */	ioctl(0, TIOCSETP, &ttybuf);	/* set up original signals */	sigsetmask(origsigs);	/* flush the buffer */	return (0);}clean_up(){    func_name = "clean_up";	if(lockflag)    	(void)unlock_desktop();  	if (prfd >0)        pr_rop(prfd,0,0,width,height,                                PIX_SRC|PIX_COLOR(BLACK), 0,0,0);	return(0);}#define prt(bs, aa) printf ( "aa 0x%x\n", *(bs + aa) )test_tec(){	register u_long *tec;	u_long tmp1;	func_name = "test_tec";	tec_fbc_test_flag = TRUE;	TRACE_IN	tec = (u_long *) cg6_d(prfd)->cg6_tec;/* 	tmptec= *tec;		*tec = 0xaaaa;	tmp1 = *tec;		if (tmp1 != 0xa22a)printf("TEC write/read test failed at address 0x0 . Expected (0xa22a ), observed (0x%x), xor (0x%x)", tmp1, tmptec, tmptec^tmp1 );	*tec = tmptec;	tec_fbc_test_flag = FALSE;*/	TRACE_OUT	return(0);}test_fbc(){	register u_long  *fbc_base;	u_long tmp1;	func_name = "test_fbc";	TRACE_IN	fbc_base = (u_long *) cg6_d(prfd)->cg6_fbc;/*	tmpfbc= *fbc_base;	tec_fbc_test_flag = TRUE;        *fbc_base = 0x5555aaaa;          tmp1 = *fbc_base;                     if (tmp1 != 0x5555aaaa) printf("FBC write/read test failed at address 0x80. Expected (0x5555aaaa), observed (0x%x), xor (0x%x)", tmp1, tmpfbc^tmp1 );        *fbc_base = tmpfbc; 	tec_fbc_test_flag = FALSE;*//*###	prt (fbc_base, L_FBC_RASTEROP);	prt (fbc_base, L_FBC_MISC);	printf ("test 0x%x\n", read_lego_fbc(fbc_base+L_FBC_STATUS));###*/	TRACE_OUT	return(0);}test_sine(){	func_name = "test_sine";	TRACE_IN	run_sine();	pr_rop(mexp,0, 0, width, height,PIX_SRC,prfd,0,0);	run_sine();	pr_rop(mobs,0, 0, width, height,PIX_SRC,prfd,0,0);	ropcheck(0,0,width, height, "sine test");	TRACE_OUT	return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -