📄 cg6test.c
字号:
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 + -