Annotation of sbbs/src/conio/vidmodes.c, revision 1.1.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.