Annotation of researchv10no/cmd/pico/framebuffers/pview.c, revision 1.1

1.1     ! root        1: #include <signal.h>
        !             2: 
        !             3: #define        DITHSIZE        16
        !             4: #define        DITHMASK        (DITHSIZE-1)
        !             5: 
        !             6: extern void    onquit();
        !             7: int ofd;
        !             8: 
        !             9: static int dith[DITHSIZE][DITHSIZE]={
        !            10:          0,128, 32,160,  8,136, 40,168,  2,130, 34,162, 10,138, 42,170,
        !            11:        192, 64,224, 96,200, 72,232,104,194, 66,226, 98,202, 74,234,106,
        !            12:         48,176, 16,144, 56,184, 24,152, 50,178, 18,146, 58,186, 26,154,
        !            13:        240,112,208, 80,248,120,216, 88,242,114,210, 82,250,122,218, 90,
        !            14:         12,140, 44,172,  4,132, 36,164, 14,142, 46,174,  6,134, 38,166,
        !            15:        204, 76,236,108,196, 68,228,100,206, 78,238,110,198, 70,230,102,
        !            16:         60,188, 28,156, 52,180, 20,148, 62,190, 30,158, 54,182, 22,150,
        !            17:        252,124,220, 92,244,116,212, 84,254,126,222, 94,246,118,214, 86,
        !            18:          3,131, 35,163, 11,139, 43,171,  1,129, 33,161,  9,137, 41,169,
        !            19:        195, 67,227, 99,203, 75,235,107,193, 65,225, 97,201, 73,233,105,
        !            20:         51,179, 19,147, 59,187, 27,155, 49,177, 17,145, 57,185, 25,153,
        !            21:        243,115,211, 83,251,123,219, 91,241,113,209, 81,249,121,217, 89,
        !            22:         15,143, 47,175,  7,135, 39,167, 13,141, 45,173,  5,133, 37,165,
        !            23:        207, 79,239,111,199, 71,231,103,205, 77,237,109,197, 69,229,101,
        !            24:         63,191, 31,159, 55,183, 23,151, 61,189, 29,157, 53,181, 21,149,
        !            25:        255,127,223, 95,247,119,215, 87,253,125,221, 93,245,117,213, 85,
        !            26: };
        !            27: 
        !            28: pvputitall(m)
        !            29: {      int y;
        !            30:        y = CUROLD; CUROLD = CURSCRATCH; CURSCRATCH = y;
        !            31:        for (y = 0; y < DEF_NL; y++)
        !            32:                pvlyank(0, y);
        !            33:        y = CUROLD; CUROLD = CURSCRATCH; CURSCRATCH = y;
        !            34: }
        !            35: 
        !            36: unsigned char out[64];
        !            37: 
        !            38: pvlyank(xx, yy)
        !            39: {      unsigned char *s = scratchred + DEF_LL*(yy-1);
        !            40:        int byte=0, mask=0x80, nout=0, x;
        !            41:        int y = yy;
        !            42: 
        !            43:        if (xx != 0) return;
        !            44: 
        !            45:        if (DEF_NL == 1024)
        !            46:        {       if (y%4) return;
        !            47:                y /= 4;
        !            48:                out[nout++] = y>>8;
        !            49:                out[nout++] = y&255;
        !            50:                for (x = 0; x < 256; x++, s+=4)
        !            51:                {       if (*s <= dith[y&DITHMASK][x&DITHMASK])
        !            52:                                byte |= mask;
        !            53:                        mask >>= 1;
        !            54:                        if (mask == 0)
        !            55:                        {       out[nout++] = byte;
        !            56:                                byte = 0;
        !            57:                                mask = 0x80;
        !            58:                        }
        !            59:                }
        !            60:        } else
        !            61:        {       if (y%2) return;
        !            62:                y /= 2;
        !            63:                out[nout++] = y>>8;
        !            64:                out[nout++] = y&255;
        !            65:                for (x = 0; x < 256; x++, s += 2)
        !            66:                {       if (*s <= dith[y&DITHMASK][x&DITHMASK])
        !            67:                        byte |= mask;
        !            68:                        mask >>= 1;
        !            69:                        if (mask == 0)
        !            70:                        {       out[nout++] = byte;
        !            71:                                byte = 0;
        !            72:                                mask = 0x80;
        !            73:                        }
        !            74:                }
        !            75:        }
        !            76:        signal(SIGINT, SIG_IGN);
        !            77:        write(ofd, out, nout);
        !            78:        signal(SIGINT, onquit);
        !            79: }

unix.superglobalmegacorp.com

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