Annotation of researchv10no/cmd/view2d/Old/cv.c, revision 1.1.1.1

1.1       root        1: #include <stdio.h>
                      2: #define        DEFINING
                      3: #include "cv.h"
                      4: 
                      5: int cv;
                      6: #define        NCVBUF  4096
                      7: char   cvbuf[NCVBUF];
                      8: char   *cvbufp=cvbuf;
                      9: int    ncvbuf=0;
                     10: int    cvdmamode=0;
                     11: cvput(x){
                     12:        if(ncvbuf >= NCVBUF-1)
                     13:                cvflush();
                     14:        *cvbufp++=x, ncvbuf++;
                     15: }
                     16: cvnput(n, p)
                     17:        register n;
                     18:        register char *p;
                     19: {
                     20:        while(n--)
                     21:                cvput(*p++);
                     22: }
                     23: cvmode(x)
                     24: {
                     25:        if(ioctl(cv, CVSETDMA, &x))
                     26:                perror("ioctl");
                     27: }
                     28: cvflush(){
                     29:        register n;
                     30:        if(ncvbuf&1)
                     31:                cvput(0);
                     32:        n=write(cv, cvbuf, ncvbuf);
                     33:        if(n!=ncvbuf)
                     34:                fprintf(stderr, "incomplete write got %d wanted %d\n", n, ncvbuf);
                     35:        if(n<0){
                     36:                perror("write");
                     37:                exit(1);
                     38:        }
                     39:        cvbufp=cvbuf;
                     40:        ncvbuf=0;
                     41: }
                     42: cvinit(cold){
                     43:        cv=open("/dev/cv0", 2);
                     44:        if(cv < 0){
                     45:                fprintf(stderr, "can't open /dev/cv0\n");
                     46:                exit(1);
                     47:        }
                     48:        if(ioctl(cv, CVSETDMA, &WR_CMD)){
                     49:                perror("ioctl");
                     50:                abort();
                     51:        }
                     52:        cvput(4);       /* wake up */
                     53:        cvflush();
                     54:        if(cold){
                     55:                cvput(0xFD);    /* cold */
                     56:                cvflush();
                     57:                cvput(4);       /* wake up */
                     58:                cvflush();
                     59:                cvput(0x9D);    /* write enable masks */
                     60:                cvput(0xFF);
                     61:                cvput(0x7);
                     62:                cvload(3,-256,-256); /* lower left screen = 0,0  (ehg) */
                     63:                cvflush();
                     64:        }
                     65: }
                     66: cvvalue(r, g, b)
                     67: {
                     68:        cvput(6);
                     69:        cvput(r);
                     70:        cvput(g);
                     71:        cvput(b);
                     72: }
                     73: cvflood()
                     74: {
                     75:        cvput(7);
                     76: }
                     77: cvload(n, val)
                     78:        Point val;
                     79: {
                     80:        cvput(160);
                     81:        cvput(n);
                     82:        cvput(val.x>>8);
                     83:        cvput(val.x);
                     84:        cvput(val.y>>8);
                     85:        cvput(val.y);
                     86: }
                     87: 
                     88: image(in, x0, y0, x1, y1, bank)
                     89:   char *in;
                     90: {
                     91:   int around=0;
                     92:   int y2;
                     93:   static char cmd[]={0x9D, 0xFF, 0x00, 0xAE};
                     94:   long n, saved, m;
                     95:   if(((int)in)&1){ error("odd address\n"); }
                     96:   n=(x1-x0+1)*(y1-y0+1);
                     97:   if(n>32767){
                     98:     y2 = y0 + 62;
                     99:     if(y2>y1) error("bad image: %d %d %d %d",x0,y0,x1,y1);
                    100:     n=(x1-x0+1)*(y2-y0);
                    101:     image(in,x0,y0,x1,y2-1,bank);
                    102:     image(in+n,x0,y2,x1,y1,bank);
                    103:   }else{
                    104:     if(n&1) n++;/* display will ignore extra byte */
                    105:     cvload(13, x0, y0);  /* window start (lower left) */
                    106:     cvload(14, x1, y1);  /* window end   (upper right)*/
                    107:     cmd[2]=bank;
                    108:     cvnput(sizeof cmd, cmd); /* WRMASK bank; DMA_write */
                    109:     cvflush();
                    110:     cvmode(WR_IMAGE);
                    111:     Write(cv, in, n);
                    112:     cvmode(WR_CMD);
                    113:   }
                    114: }
                    115: 
                    116: zoom(fact)
                    117:   int fact;
                    118: {
                    119:   cvput(0x34);
                    120:   cvput(fact);
                    121: }
                    122: 
                    123: lutrte(bank)
                    124:   int bank;
                    125: {
                    126:   cvput(0x1E);
                    127:   cvput(bank);
                    128: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.