Annotation of sbbs/src/conio/vidmodes.c, revision 1.1

1.1     ! root        1: /* $Id: vidmodes.c,v 1.5 2005/11/20 20:12:45 deuce Exp $ */
        !             2: 
        !             3: #include <stdlib.h>
        !             4: 
        !             5: #include "vidmodes.h"
        !             6: 
        !             7: struct video_params vparams[36] = {
        !             8:        /* BW 40x25 */
        !             9:        {BW40, GREYSCALE_PALETTE, 40, 25, 14, 15, 16, 8},
        !            10:        /* CO 40x25 */
        !            11:        {C40, COLOUR_PALETTE, 40, 25, 14, 15, 16, 8},
        !            12:        /* BW 80x25 */
        !            13:        {BW80, GREYSCALE_PALETTE, 80, 25, 14, 15, 16, 8},
        !            14:        /* CO 80x25 */
        !            15:        {C80, COLOUR_PALETTE, 80, 25, 14, 15, 16, 8},
        !            16:        /* MONO */
        !            17:        {MONO, 0, 80, 25, 14, 15, 16, 8},
        !            18:        /* CO 40x14 */
        !            19:        {C40X14, COLOUR_PALETTE, 40, 14, 14, 15, 16, 8},
        !            20:        /* CO 40x21 */
        !            21:        {C40X21, COLOUR_PALETTE, 40, 21, 14, 15, 16, 8},
        !            22:        /* CO 40x28 */
        !            23:        {C40X28, COLOUR_PALETTE, 40, 28, 12, 13, 14, 8},
        !            24:        /* CO 40x43 */
        !            25:        {C40X43, COLOUR_PALETTE, 40, 43, 7, 7, 8, 8},
        !            26:        /* CO 40x50 */
        !            27:        {C40X50, COLOUR_PALETTE, 40, 50, 7, 7, 8, 8},
        !            28:        /* CO 40x60 */
        !            29:        {C40X60, COLOUR_PALETTE, 40, 60, 7, 7, 8, 8},
        !            30:        /* CO 80x14 */
        !            31:        {C80X14, COLOUR_PALETTE, 80, 14, 14, 15, 16, 8},
        !            32:        /* CO 80x21 */
        !            33:        {C80X21, COLOUR_PALETTE, 80, 21, 14, 15, 16, 8},
        !            34:        /* CO 80x28 */
        !            35:        {C80X28, COLOUR_PALETTE, 80, 28, 12, 13, 14, 8},
        !            36:        /* CO 80x43 */
        !            37:        {C80X43, COLOUR_PALETTE, 80, 43, 7, 7, 8, 8},
        !            38:        /* CO 80x50 */
        !            39:        {C80X50, COLOUR_PALETTE, 80, 50, 7, 7, 8, 8},
        !            40:        /* CO 80x60 */
        !            41:        {C80X60, COLOUR_PALETTE, 80, 60, 7, 7, 8, 8},
        !            42:        /* B 40x14 */
        !            43:        {BW40X14, GREYSCALE_PALETTE, 40, 14, 14, 15, 16, 8},
        !            44:        /* BW 40x21 */
        !            45:        {BW40X21, GREYSCALE_PALETTE, 40, 21, 14, 15, 16, 8},
        !            46:        /* BW 40x28 */
        !            47:        {BW40X28, GREYSCALE_PALETTE, 40, 28, 12, 13, 14, 8},
        !            48:        /* BW 40x43 */
        !            49:        {BW40X43, GREYSCALE_PALETTE, 40, 43, 7, 7, 8, 8},
        !            50:        /* BW 40x50 */
        !            51:        {BW40X50, GREYSCALE_PALETTE, 40, 50, 7, 7, 8, 8},
        !            52:        /* BW 40x60 */
        !            53:        {BW40X60, GREYSCALE_PALETTE, 40, 60, 7, 7, 8, 8},
        !            54:        /* BW 80x14 */
        !            55:        {BW80X14, GREYSCALE_PALETTE, 80, 14, 14, 15, 16, 8},
        !            56:        /* BW 80x21 */
        !            57:        {BW80X21, GREYSCALE_PALETTE, 80, 21, 14, 15, 16, 8},
        !            58:        /* BW 80x28 */
        !            59:        {BW80X28, GREYSCALE_PALETTE, 80, 28, 12, 13, 14, 8},
        !            60:        /* BW 80x43 */
        !            61:        {BW80X43, GREYSCALE_PALETTE, 80, 43, 7, 7, 8, 8},
        !            62:        /* BW 80x50 */
        !            63:        {BW80X50, GREYSCALE_PALETTE, 80, 50, 7, 7, 8, 8},
        !            64:        /* BW 80x60 */
        !            65:        {BW80X60, GREYSCALE_PALETTE, 80, 60, 7, 7, 8, 8},
        !            66:        /* MONO 80x14 */
        !            67:        {MONO14, MONO_PALETTE, 80, 14, 14, 15, 16, 8},
        !            68:        /* MONO 80x21 */
        !            69:        {MONO21, MONO_PALETTE, 80, 21, 14, 15, 16, 8},
        !            70:        /* MONO 80x28 */
        !            71:        {MONO28, MONO_PALETTE, 80, 28, 12, 13, 14, 8},
        !            72:        /* MONO 80x43 */
        !            73:        {MONO43, MONO_PALETTE, 80, 43, 7, 7, 8, 8},
        !            74:        /* MONO 80x50 */
        !            75:        {MONO50, MONO_PALETTE, 80, 50, 7, 7, 8, 8},
        !            76:        /* MONO 80x60 */
        !            77:        {MONO60, MONO_PALETTE, 80, 60, 7, 7, 8, 8},
        !            78:        /* Magical C4350 Mode */
        !            79:        {C4350, COLOUR_PALETTE, 80, 50, 7, 7, 8, 8},
        !            80: };
        !            81: 
        !            82: unsigned char palettes[3][16] = {
        !            83:        /* Mono */
        !            84:        { 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
        !            85:          0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07
        !            86:        },
        !            87:        /* Black and White */
        !            88:        { 0x00, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
        !            89:          0x08, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f, 0x0f
        !            90:        },
        !            91:        /* Colour */
        !            92:        { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 
        !            93:          0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
        !            94:        }
        !            95: };
        !            96: 
        !            97: struct dac_colors dac_default16[16] = {
        !            98:        {0, 0, 0},    {0, 0, 42},   {0, 42, 0},   {0, 42, 42},
        !            99:        {42, 0, 0},   {42, 0, 42},  {42, 21, 0},  {42, 42, 42},
        !           100:        {21, 21, 21}, {21, 21, 63}, {21, 63, 21}, {21, 63, 63},
        !           101:        {63, 21, 21}, {63, 21, 63}, {63, 63, 21}, {63, 63, 63}
        !           102: };
        !           103: 
        !           104: struct dac_colors dac_default256[16] = {
        !           105:        {0, 0, 0},    {0, 0, 168},   {0, 168, 0},   {0, 168, 168},
        !           106:        {168, 0, 0},   {168, 0, 168},  {168, 84, 0},  {168, 168, 168},
        !           107:        {84, 84, 84}, {84, 84, 255}, {84, 255, 84}, {84, 255, 255},
        !           108:        {255, 84, 84}, {255, 84, 255}, {255, 255, 84}, {255, 255, 255}
        !           109: };
        !           110: 
        !           111: int find_vmode(int mode)
        !           112: {
        !           113:     unsigned i;
        !           114: 
        !           115:        for (i = 0; i < NUMMODES; i++)
        !           116:                if (vparams[i].mode == mode)
        !           117:                        return i;
        !           118: 
        !           119:        return -1;
        !           120: }
        !           121: 
        !           122: int load_vmode(struct video_stats *vs, int mode)
        !           123: {
        !           124:        int i;
        !           125:        unsigned short *newvmem;
        !           126: 
        !           127:        i=find_vmode(mode);
        !           128:        if(i==-1)
        !           129:                return(-1);
        !           130:        newvmem=(unsigned short *)realloc(vs->vmem, vparams[i].cols*vparams[i].rows*sizeof(unsigned short));
        !           131:        if(newvmem==NULL)
        !           132:                return(-1);
        !           133:        vs->vmem=newvmem;
        !           134:        vs->rows=vparams[i].rows;
        !           135:        vs->cols=vparams[i].cols;
        !           136:        vs->curs_start=vparams[i].curs_start;
        !           137:        vs->curs_end=vparams[i].curs_end;
        !           138:        vs->default_curs_start=vparams[i].curs_start;
        !           139:        vs->default_curs_end=vparams[i].curs_end;
        !           140:        if(vs->curs_row < 0)
        !           141:                vs->curs_row=0;
        !           142:        if(vs->curs_row >= vparams[i].rows)
        !           143:                vs->curs_row=vparams[i].rows-1;
        !           144:        if(vs->curs_col < 0)
        !           145:                vs->curs_col=0;
        !           146:        if(vs->curs_col >= vparams[i].cols)
        !           147:                vs->curs_col=vparams[i].cols-1;
        !           148:        vs->palette=palettes[vparams[i].palette];
        !           149:        vs->charheight=vparams[i].charheight;
        !           150:        vs->charwidth=vparams[i].charwidth;
        !           151:        vs->mode=mode;
        !           152:        return(0);
        !           153: }

unix.superglobalmegacorp.com

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