|
|
1.1 root 1: Index: Makefile
2: ===================================================================
1.1.1.2 ! root 3: RCS file: /sources/vgabios/vgabios/Makefile,v
! 4: retrieving revision 1.17
! 5: diff -u -w -r1.17 Makefile
! 6: --- Makefile 6 Mar 2005 13:06:47 -0000 1.17
! 7: +++ Makefile 25 Mar 2006 01:19:02 -0000
! 8: @@ -17,9 +17,9 @@
! 9: all: bios cirrus-bios
! 10:
! 11:
! 12: -bios: biossums vgabios.bin vgabios.debug.bin
! 13: +bios: biossums vgabios.bin #vgabios.debug.bin
! 14:
! 15: -cirrus-bios: vgabios-cirrus.bin vgabios-cirrus.debug.bin
! 16: +cirrus-bios: vgabios-cirrus.bin #vgabios-cirrus.debug.bin
! 17:
! 18: clean:
! 19: /bin/rm -f biossums *.o *.s *.ld86 \
1.1 root 20: Index: clext.c
21: ===================================================================
1.1.1.2 ! root 22: RCS file: /sources/vgabios/vgabios/clext.c,v
! 23: retrieving revision 1.9
! 24: diff -u -w -r1.9 clext.c
! 25: --- clext.c 4 Dec 2004 15:26:17 -0000 1.9
! 26: +++ clext.c 25 Mar 2006 01:19:03 -0000
! 27: @@ -238,6 +238,21 @@
1.1 root 28: 0xffff
29: };
1.1.1.2 ! root 30:
! 31: +/* 1600x1200x8 */
! 32: +unsigned short cseq_1600x1200x8[] = {
! 33: +0x0300,0x2101,0x0f02,0x0003,0x0e04,0x1107,
1.1 root 34: +0x760b,0x760c,0x760d,0x760e,
35: +0x0412,0x0013,0x2017,
36: +0x341b,0x341c,0x341d,0x341e,
37: +0xffff
38: +};
1.1.1.2 ! root 39: +unsigned short ccrtc_1600x1200x8[] = {
1.1 root 40: +0x2911,0xc300,0x9f01,0x9f02,0x8603,0x8304,0x9405,0x2406,0xf707,
41: +0x6009,0x000c,0x000d,
1.1.1.2 ! root 42: +0x0310,0xff12,0xa013,0x4014,0xff15,0x2416,0xc317,0xff18,
! 43: +0x001a,0x221b,0x001d,
1.1 root 44: +0xffff
45: +};
46:
47: cirrus_mode_t cirrus_modes[] =
48: {
1.1.1.2 ! root 49: @@ -291,6 +306,10 @@
! 50: cseq_1280x1024x16,cgraph_svgacolor,ccrtc_1280x1024x16,16,
! 51: 6,5,11,6,5,5,0,0,0},
1.1 root 52:
1.1.1.2 ! root 53: + {0x7b,1600,1200,8,0x00,
! 54: + cseq_1600x1200x8,cgraph_svgacolor,ccrtc_1600x1200x8,8,
! 55: + 4,0,0,0,0,0,0,0,0},
! 56: +
1.1 root 57: {0xfe,0,0,0,0,cseq_vga,cgraph_vga,ccrtc_vga,0,
58: 0xff,0,0,0,0,0,0,0,0},
1.1.1.2 ! root 59: {0xff,0,0,0,0,0,0,0,0,
! 60: Index: vgabios.c
! 61: ===================================================================
! 62: RCS file: /sources/vgabios/vgabios/vgabios.c,v
! 63: retrieving revision 1.63
! 64: diff -u -w -r1.63 vgabios.c
! 65: --- vgabios.c 26 Dec 2005 19:50:26 -0000 1.63
! 66: +++ vgabios.c 25 Mar 2006 01:19:03 -0000
! 67: @@ -111,6 +111,7 @@
! 68: static void biosfn_read_video_state_size();
! 69: static void biosfn_save_video_state();
! 70: static void biosfn_restore_video_state();
! 71: +extern Bit8u video_save_pointer_table[];
! 72:
! 73: // This is for compiling with gcc2 and gcc3
! 74: #define ASM_START #asm
! 75: @@ -459,6 +460,29 @@
! 76:
! 77: pop ds
! 78: ret
! 79: +
! 80: +_video_save_pointer_table:
! 81: + .word _video_param_table
! 82: + .word 0xc000
! 83: +
! 84: + .word 0 /* XXX: fill it */
! 85: + .word 0
! 86: +
! 87: + .word 0 /* XXX: fill it */
! 88: + .word 0
! 89: +
! 90: + .word 0 /* XXX: fill it */
! 91: + .word 0
! 92: +
! 93: + .word 0 /* XXX: fill it */
! 94: + .word 0
! 95: +
! 96: + .word 0 /* XXX: fill it */
! 97: + .word 0
! 98: +
! 99: + .word 0 /* XXX: fill it */
! 100: + .word 0
! 101: +
! 102: ASM_END
! 103:
! 104: // --------------------------------------------------------------------------------------------
! 105: @@ -780,8 +804,8 @@
! 106:
! 107: // Should we clear the screen ?
! 108: Bit8u noclearmem=mode&0x80;
! 109: - Bit8u line,mmask,*palette;
! 110: - Bit16u i,twidth,theight,cheight;
! 111: + Bit8u line,mmask,*palette,vpti;
! 112: + Bit16u i,twidth,theightm1,cheight;
! 113: Bit8u modeset_ctl,video_ctl,vga_switches;
! 114: Bit16u crtc_addr;
! 115:
! 116: @@ -804,9 +828,10 @@
! 117: if(line==0xFF)
! 118: return;
! 119:
! 120: - twidth=vga_modes[line].twidth;
! 121: - theight=vga_modes[line].theight;
! 122: - cheight=vga_modes[line].cheight;
! 123: + vpti=line_to_vpti[line];
! 124: + twidth=video_param_table[vpti].twidth;
! 125: + theightm1=video_param_table[vpti].theightm1;
! 126: + cheight=video_param_table[vpti].cheight;
! 127:
! 128: // Read the bios vga control
! 129: video_ctl=read_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL);
! 130: @@ -866,21 +891,25 @@
! 131: inb(VGAREG_ACTL_RESET);
! 132:
! 133: // Set Attribute Ctl
! 134: - for(i=0;i<=ACTL_MAX_REG;i++)
! 135: + for(i=0;i<=0x13;i++)
! 136: {outb(VGAREG_ACTL_ADDRESS,i);
! 137: - outb(VGAREG_ACTL_WRITE_DATA,actl_regs[vga_modes[line].actlmodel][i]);
! 138: + outb(VGAREG_ACTL_WRITE_DATA,video_param_table[vpti].actl_regs[i]);
! 139: }
! 140: + outb(VGAREG_ACTL_ADDRESS,0x14);
! 141: + outb(VGAREG_ACTL_WRITE_DATA,0x00);
! 142:
! 143: // Set Sequencer Ctl
! 144: - for(i=0;i<=SEQU_MAX_REG;i++)
! 145: + outb(VGAREG_SEQU_ADDRESS,0);
! 146: + outb(VGAREG_SEQU_DATA,0x03);
! 147: + for(i=1;i<=4;i++)
! 148: {outb(VGAREG_SEQU_ADDRESS,i);
! 149: - outb(VGAREG_SEQU_DATA,sequ_regs[vga_modes[line].sequmodel][i]);
! 150: + outb(VGAREG_SEQU_DATA,video_param_table[vpti].sequ_regs[i - 1]);
! 151: }
! 152:
! 153: // Set Grafx Ctl
! 154: - for(i=0;i<=GRDC_MAX_REG;i++)
! 155: + for(i=0;i<=8;i++)
! 156: {outb(VGAREG_GRDC_ADDRESS,i);
! 157: - outb(VGAREG_GRDC_DATA,grdc_regs[vga_modes[line].grdcmodel][i]);
! 158: + outb(VGAREG_GRDC_DATA,video_param_table[vpti].grdc_regs[i]);
! 159: }
! 160:
! 161: // Set CRTC address VGA or MDA
! 162: @@ -889,13 +918,13 @@
! 163: // Disable CRTC write protection
! 164: outw(crtc_addr,0x0011);
! 165: // Set CRTC regs
! 166: - for(i=0;i<=CRTC_MAX_REG;i++)
! 167: + for(i=0;i<=0x18;i++)
! 168: {outb(crtc_addr,i);
! 169: - outb(crtc_addr+1,crtc_regs[vga_modes[line].crtcmodel][i]);
! 170: + outb(crtc_addr+1,video_param_table[vpti].crtc_regs[i]);
! 171: }
! 172:
! 173: // Set the misc register
! 174: - outb(VGAREG_WRITE_MISC_OUTPUT,vga_modes[line].miscreg);
! 175: + outb(VGAREG_WRITE_MISC_OUTPUT,video_param_table[vpti].miscreg);
! 176:
! 177: // Enable video
! 178: outb(VGAREG_ACTL_ADDRESS,0x20);
! 179: @@ -927,9 +956,9 @@
! 180: // Set the BIOS mem
! 181: write_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MODE,mode);
! 182: write_word(BIOSMEM_SEG,BIOSMEM_NB_COLS,twidth);
! 183: - write_word(BIOSMEM_SEG,BIOSMEM_PAGE_SIZE,vga_modes[line].slength);
! 184: + write_word(BIOSMEM_SEG,BIOSMEM_PAGE_SIZE,*(Bit16u *)&video_param_table[vpti].slength_l);
! 185: write_word(BIOSMEM_SEG,BIOSMEM_CRTC_ADDRESS,crtc_addr);
! 186: - write_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS,theight-1);
! 187: + write_byte(BIOSMEM_SEG,BIOSMEM_NB_ROWS,theightm1);
! 188: write_word(BIOSMEM_SEG,BIOSMEM_CHAR_HEIGHT,cheight);
! 189: write_byte(BIOSMEM_SEG,BIOSMEM_VIDEO_CTL,(0x60|noclearmem));
! 190: write_byte(BIOSMEM_SEG,BIOSMEM_SWITCHES,0xF9);
! 191: @@ -937,8 +966,8 @@
! 192:
! 193: // FIXME We nearly have the good tables. to be reworked
! 194: write_byte(BIOSMEM_SEG,BIOSMEM_DCC_INDEX,0x08); // 8 is VGA should be ok for now
! 195: - write_word(BIOSMEM_SEG,BIOSMEM_VS_POINTER,0x00);
! 196: - write_word(BIOSMEM_SEG,BIOSMEM_VS_POINTER+2,0x00);
! 197: + write_word(BIOSMEM_SEG,BIOSMEM_VS_POINTER, video_save_pointer_table);
! 198: + write_word(BIOSMEM_SEG,BIOSMEM_VS_POINTER+2, 0xc000);
! 199:
! 200: // FIXME
! 201: write_byte(BIOSMEM_SEG,BIOSMEM_CURRENT_MSR,0x00); // Unavailable on vanilla vga, but...
! 202: @@ -1114,7 +1143,7 @@
! 203: }
! 204: else
! 205: {
! 206: - address = page*vga_modes[line].slength;
! 207: + address = page * (*(Bit16u *)&video_param_table[line_to_vpti[line]].slength_l);
! 208: }
! 209:
! 210: // CRTC regs 0x0c and 0x0d
! 211: @@ -1271,7 +1300,7 @@
! 212: else
! 213: {
! 214: // FIXME gfx mode not complete
! 215: - cheight=vga_modes[line].cheight;
! 216: + cheight=video_param_table[line_to_vpti[line]].cheight;
! 217: switch(vga_modes[line].memmodel)
! 218: {
! 219: case PLANAR4:
! 220: @@ -1581,7 +1610,7 @@
! 221: else
! 222: {
! 223: // FIXME gfx mode not complete
! 224: - cheight=vga_modes[line].cheight;
! 225: + cheight=video_param_table[line_to_vpti[line]].cheight;
! 226: bpp=vga_modes[line].pixbits;
! 227: while((count-->0) && (xcurs<nbcols))
! 228: {
! 229: @@ -1641,7 +1670,7 @@
! 230: else
! 231: {
! 232: // FIXME gfx mode not complete
! 233: - cheight=vga_modes[line].cheight;
! 234: + cheight=video_param_table[line_to_vpti[line]].cheight;
! 235: bpp=vga_modes[line].pixbits;
! 236: while((count-->0) && (xcurs<nbcols))
! 237: {
! 238: @@ -1949,7 +1978,7 @@
! 239: else
! 240: {
! 241: // FIXME gfx mode not complete
! 242: - cheight=vga_modes[line].cheight;
! 243: + cheight=video_param_table[line_to_vpti[line]].cheight;
! 244: bpp=vga_modes[line].pixbits;
! 245: switch(vga_modes[line].memmodel)
! 246: {
! 247: Index: vgatables.h
! 248: ===================================================================
! 249: RCS file: /sources/vgabios/vgabios/vgatables.h,v
! 250: retrieving revision 1.9
! 251: diff -u -w -r1.9 vgatables.h
! 252: --- vgatables.h 21 Sep 2005 18:45:20 -0000 1.9
! 253: +++ vgatables.h 25 Mar 2006 01:19:04 -0000
! 254: @@ -77,7 +77,7 @@
! 255: * Tables of default values for each mode
! 256: *
! 257: */
! 258: -#define MODE_MAX 0x14
! 259: +#define MODE_MAX 15
! 260: #define TEXT 0x00
! 261: #define GRAPH 0x01
! 262:
! 263: @@ -96,126 +96,38 @@
! 264:
! 265: typedef struct
! 266: {Bit8u svgamode;
! 267: - Bit16u vesamode;
! 268: Bit8u class; /* TEXT, GRAPH */
! 269: Bit8u memmodel; /* CTEXT,MTEXT,CGA,PL1,PL2,PL4,P8,P15,P16,P24,P32 */
! 270: - Bit8u nbpages;
! 271: Bit8u pixbits;
! 272: - Bit16u swidth, sheight;
! 273: - Bit16u twidth, theight;
! 274: - Bit16u cwidth, cheight;
! 275: Bit16u sstart;
! 276: - Bit16u slength;
! 277: - Bit8u miscreg;
! 278: Bit8u pelmask;
! 279: - Bit8u crtcmodel;
! 280: - Bit8u actlmodel;
! 281: - Bit8u grdcmodel;
! 282: - Bit8u sequmodel;
! 283: Bit8u dacmodel; /* 0 1 2 3 */
! 284: } VGAMODES;
! 285:
! 286: static VGAMODES vga_modes[MODE_MAX+1]=
! 287: -{//mode vesa class model pg bits sw sh tw th cw ch sstart slength misc pelm crtc actl gdc sequ dac
! 288: - {0x00, 0xFFFF, TEXT, CTEXT, 8, 4, 360, 400, 40, 25, 9, 16, 0xB800, 0x0800, 0x67, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02},
! 289: - {0x01, 0xFFFF, TEXT, CTEXT, 8, 4, 360, 400, 40, 25, 9, 16, 0xB800, 0x0800, 0x67, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x02},
! 290: - {0x02, 0xFFFF, TEXT, CTEXT, 4, 4, 720, 400, 80, 25, 9, 16, 0xB800, 0x1000, 0x67, 0xFF, 0x01, 0x00, 0x00, 0x01, 0x02},
! 291: - {0x03, 0xFFFF, TEXT, CTEXT, 4, 4, 720, 400, 80, 25, 9, 16, 0xB800, 0x1000, 0x67, 0xFF, 0x01, 0x00, 0x00, 0x01, 0x02},
! 292: - {0x04, 0xFFFF, GRAPH, CGA, 4, 2, 320, 200, 40, 25, 8, 8, 0xB800, 0x0800, 0x63, 0xFF, 0x02, 0x01, 0x01, 0x02, 0x01},
! 293: - {0x05, 0xFFFF, GRAPH, CGA, 1, 2, 320, 200, 40, 25, 8, 8, 0xB800, 0x0800, 0x63, 0xFF, 0x02, 0x01, 0x01, 0x02, 0x01},
! 294: - {0x06, 0xFFFF, GRAPH, CGA, 1, 1, 640, 200, 80, 25, 8, 8, 0xB800, 0x1000, 0x63, 0xFF, 0x03, 0x02, 0x02, 0x03, 0x01},
! 295: - {0x07, 0xFFFF, TEXT, MTEXT, 4, 4, 720, 400, 80, 25, 9, 16, 0xB000, 0x1000, 0x66, 0xFF, 0x04, 0x03, 0x03, 0x01, 0x00},
! 296: - {0x0D, 0xFFFF, GRAPH, PLANAR4, 8, 4, 320, 200, 40, 25, 8, 8, 0xA000, 0x2000, 0x63, 0xFF, 0x05, 0x04, 0x04, 0x04, 0x01},
! 297: - {0x0E, 0xFFFF, GRAPH, PLANAR4, 4, 4, 640, 200, 80, 25, 8, 8, 0xA000, 0x4000, 0x63, 0xFF, 0x06, 0x04, 0x04, 0x05, 0x01},
! 298: - {0x0F, 0xFFFF, GRAPH, PLANAR1, 2, 1, 640, 350, 80, 25, 8, 14, 0xA000, 0x8000, 0xa3, 0xFF, 0x07, 0x05, 0x04, 0x05, 0x00},
! 299: - {0x10, 0xFFFF, GRAPH, PLANAR4, 2, 4, 640, 350, 80, 25, 8, 14, 0xA000, 0x8000, 0xa3, 0xFF, 0x07, 0x06, 0x04, 0x05, 0x02},
! 300: - {0x11, 0xFFFF, GRAPH, PLANAR1, 1, 1, 640, 480, 80, 30, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x08, 0x07, 0x04, 0x05, 0x02},
! 301: - {0x12, 0xFFFF, GRAPH, PLANAR4, 1, 4, 640, 480, 80, 30, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x08, 0x06, 0x04, 0x05, 0x02},
! 302: - {0x13, 0xFFFF, GRAPH, LINEAR8, 1, 8, 320, 200, 40, 25, 8, 8, 0xA000, 0x0000, 0x63, 0xFF, 0x09, 0x08, 0x05, 0x06, 0x03},
! 303: - {0x6A, 0xFFFF, GRAPH, PLANAR4, 1, 4, 800, 600,100, 37, 8, 16, 0xA000, 0x0000, 0xe3, 0xFF, 0x0A, 0x06, 0x04, 0x05, 0x02}
! 304: -};
! 305: -
! 306: -/* CRTC */
! 307: -#define CRTC_MAX_REG 0x18
! 308: -#define CRTC_MAX_MODEL 0x0A
! 309: -static Bit8u crtc_access[CRTC_MAX_REG+1]=
! 310: -{ /* 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 */
! 311: - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
! 312: -};
! 313: -static Bit8u crtc_regs[CRTC_MAX_MODEL+1][CRTC_MAX_REG+1]=
! 314: -{/* Model 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 */
! 315: - /* 00 */ 0x2d,0x27,0x28,0x90,0x2b,0xa0,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x1f,0x96,0xb9,0xa3,0xff,
! 316: - /* 01 */ 0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x1f,0x96,0xb9,0xa3,0xff,
! 317: - /* 02 */ 0x2d,0x27,0x28,0x90,0x2b,0x80,0xbf,0x1f,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xa2,0xff,
! 318: - /* 03 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0xc1,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xc2,0xff,
! 319: - /* 04 */ 0x5f,0x4f,0x50,0x82,0x55,0x81,0xbf,0x1f,0x00,0x4f,0x0d,0x0e,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x0f,0x96,0xb9,0xa3,0xff,
! 320: - /* 05 */ 0x2d,0x27,0x28,0x90,0x2b,0x80,0xbf,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x14,0x00,0x96,0xb9,0xe3,0xff,
! 321: - /* 06 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0xc0,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x00,0x96,0xb9,0xe3,0xff,
! 322: - /* 07 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x83,0x85,0x5d,0x28,0x0f,0x63,0xba,0xe3,0xff,
! 323: - /* 08 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0x0b,0x3e,0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0xea,0x8c,0xdf,0x28,0x00,0xe7,0x04,0xe3,0xff,
! 324: - /* 09 */ 0x5f,0x4f,0x50,0x82,0x54,0x80,0xbf,0x1f,0x00,0x41,0x00,0x00,0x00,0x00,0x00,0x00,0x9c,0x8e,0x8f,0x28,0x40,0x96,0xb9,0xa3,0xff,
! 325: - /* 0A */ 0x7f,0x63,0x63,0x83,0x6b,0x1b,0x72,0xf0,0x00,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x59,0x8d,0x57,0x32,0x00,0x57,0x73,0xe3,0xff
! 326: -};
! 327: -
! 328: -/* Attribute Controler 0x3c0 */
! 329: -#define ACTL_MAX_REG 0x14
! 330: -#define ACTL_MAX_MODEL 0x08
! 331: -
! 332: -static Bit8u actl_access[ACTL_MAX_REG+1]=
! 333: -{/* 00 01 02 03 04 05 06 07 08 09 0A 0B OC OD OE OF 10 11 12 13 14 */
! 334: - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
! 335: -};
! 336: -
! 337: -static Bit8u actl_regs[ACTL_MAX_MODEL+1][ACTL_MAX_REG+1]=
! 338: -{/* Model 00 01 02 03 04 05 06 07 08 09 0A 0B OC OD OE OF 10 11 12 13 14 */
! 339: - /* 00 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x0c,0x00,0x0f,0x08,0x00,
! 340: - /* 01 */ 0x00,0x13,0x15,0x17,0x02,0x04,0x06,0x07,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x01,0x00,0x03,0x00,0x00,
! 341: - /* 02 */ 0x00,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x17,0x01,0x00,0x01,0x00,0x00,
! 342: - /* 03 */ 0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x10,0x18,0x18,0x18,0x18,0x18,0x18,0x18,0x0e,0x00,0x0f,0x08,0x00,
! 343: - /* 04 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x01,0x00,0x0f,0x00,0x00,
! 344: - /* 05 */ 0x00,0x08,0x00,0x00,0x18,0x18,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x18,0x00,0x00,0x01,0x00,0x01,0x00,0x00,
! 345: - /* 06 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x14,0x07,0x38,0x39,0x3a,0x3b,0x3c,0x3d,0x3e,0x3f,0x01,0x00,0x0f,0x00,0x00,
! 346: - /* 07 */ 0x00,0x3f,0x00,0x3f,0x00,0x3f,0x00,0x3f,0x00,0x3f,0x00,0x3f,0x00,0x3f,0x00,0x3f,0x01,0x00,0x0f,0x00,0x00,
! 347: - /* 08 */ 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x41,0x00,0x0f,0x00,0x00
! 348: -};
! 349: -
! 350: -/* Sequencer 0x3c4 */
! 351: -#define SEQU_MAX_REG 0x04
! 352: -#define SEQU_MAX_MODEL 0x06
! 353: -
! 354: -static Bit8u sequ_access[SEQU_MAX_REG+1]=
! 355: -{ /* 00 01 02 03 04 */
! 356: - 0x00,0x00,0x00,0x00,0x00
! 357: -};
! 358: -
! 359: -static Bit8u sequ_regs[SEQU_MAX_MODEL+1][SEQU_MAX_REG+1]=
! 360: -{/* Model 00 01 02 03 04 */
! 361: - /* 00 */ 0x03,0x08,0x03,0x00,0x02,
! 362: - /* 01 */ 0x03,0x00,0x03,0x00,0x02,
! 363: - /* 02 */ 0x03,0x09,0x03,0x00,0x02,
! 364: - /* 03 */ 0x03,0x01,0x01,0x00,0x06,
! 365: - /* 04 */ 0x03,0x09,0x0f,0x00,0x06,
! 366: - /* 05 */ 0x03,0x01,0x0f,0x00,0x06,
! 367: - /* 06 */ 0x03,0x01,0x0f,0x00,0x0e
! 368: -};
! 369: -
! 370: -/* Graphic ctl 0x3ce */
! 371: -#define GRDC_MAX_REG 0x08
! 372: -#define GRDC_MAX_MODEL 0x05
! 373: -
! 374: -static Bit8u grdc_access[GRDC_MAX_REG+1]=
! 375: -{ /* 00 01 02 03 04 05 06 07 08 */
! 376: - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
! 377: -};
! 378: -
! 379: -static Bit8u grdc_regs[GRDC_MAX_MODEL+1][GRDC_MAX_REG+1]=
! 380: -{/* Model 00 01 02 03 04 05 06 07 08 */
! 381: - /* 00 */ 0x00,0x00,0x00,0x00,0x00,0x10,0x0e,0x0f,0xff,
! 382: - /* 01 */ 0x00,0x00,0x00,0x00,0x00,0x30,0x0f,0x0f,0xff,
! 383: - /* 02 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x0d,0x0f,0xff,
! 384: - /* 03 */ 0x00,0x00,0x00,0x00,0x00,0x10,0x0a,0x0f,0xff,
! 385: - /* 04 */ 0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x0f,0xff,
! 386: - /* 05 */ 0x00,0x00,0x00,0x00,0x00,0x40,0x05,0x0f,0xff
! 387: +{//mode class model bits sstart pelm dac
! 388: + {0x00, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02},
! 389: + {0x01, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02},
! 390: + {0x02, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02},
! 391: + {0x03, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02},
! 392: + {0x04, GRAPH, CGA, 2, 0xB800, 0xFF, 0x01},
! 393: + {0x05, GRAPH, CGA, 2, 0xB800, 0xFF, 0x01},
! 394: + {0x06, GRAPH, CGA, 1, 0xB800, 0xFF, 0x01},
! 395: + {0x07, TEXT, MTEXT, 4, 0xB000, 0xFF, 0x00},
! 396: + {0x0D, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x01},
! 397: + {0x0E, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x01},
! 398: + {0x0F, GRAPH, PLANAR1, 1, 0xA000, 0xFF, 0x00},
! 399: + {0x10, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02},
! 400: + {0x11, GRAPH, PLANAR1, 1, 0xA000, 0xFF, 0x02},
! 401: + {0x12, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02},
! 402: + {0x13, GRAPH, LINEAR8, 8, 0xA000, 0xFF, 0x03},
! 403: + {0x6A, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02}
! 404: +};
! 405: +
! 406: +/* convert index in vga_modes[] to index in video_param_table[] */
! 407: +static Bit8u line_to_vpti[MODE_MAX+1]={
! 408: + 0x17, 0x17, 0x18, 0x18, 0x04, 0x05, 0x06, 0x07,
! 409: + 0x0d, 0x0e, 0x11, 0x12, 0x1a, 0x1b, 0x1c, 0x1d,
1.1 root 410: };
1.1.1.2 ! root 411:
! 412: /* Default Palette */
! 413: @@ -224,6 +136,398 @@
! 414: static Bit8u dac_regs[DAC_MAX_MODEL+1]=
! 415: {0x3f,0x3f,0x3f,0xff};
! 416:
! 417: +/* standard BIOS Video Parameter Table */
! 418: +typedef struct {
! 419: + Bit8u twidth;
! 420: + Bit8u theightm1;
! 421: + Bit8u cheight;
! 422: + Bit8u slength_l;
! 423: + Bit8u slength_h;
! 424: + Bit8u sequ_regs[4];
! 425: + Bit8u miscreg;
! 426: + Bit8u crtc_regs[25];
! 427: + Bit8u actl_regs[20];
! 428: + Bit8u grdc_regs[9];
! 429: +} VideoParamTableEntry;
! 430: +
! 431: +static VideoParamTableEntry video_param_table[30] = {
! 432: +{
! 433: + /* index=0x00 no mode defined */
! 434: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 435: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 436: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 437: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 438: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 439: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 440: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 441: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 442: +},
! 443: +{
! 444: + /* index=0x01 no mode defined */
! 445: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 446: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 447: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 448: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 449: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 450: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 451: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 452: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 453: +},
! 454: +{
! 455: + /* index=0x02 no mode defined */
! 456: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 457: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 458: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 459: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 460: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 461: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 462: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 463: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 464: +},
! 465: +{
! 466: + /* index=0x03 no mode defined */
! 467: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 468: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 469: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 470: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 471: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 472: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 473: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 474: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 475: +},
! 476: +{
! 477: + /* index=0x04 vga mode 0x04 */
! 478: + 40, 24, 8, 0x00, 0x08, /* tw, th-1, ch, slength */
! 479: + 0x09, 0x03, 0x00, 0x02, /* sequ_regs */
! 480: + 0x63, /* miscreg */
! 481: + 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
! 482: + 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 483: + 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
! 484: + 0xff, /* crtc_regs */
! 485: + 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
! 486: + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
! 487: + 0x01, 0x00, 0x03, 0x00, /* actl_regs */
! 488: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff, /* grdc_regs */
! 489: +},
! 490: +{
! 491: + /* index=0x05 vga mode 0x05 */
! 492: + 40, 24, 8, 0x00, 0x08, /* tw, th-1, ch, slength */
! 493: + 0x09, 0x03, 0x00, 0x02, /* sequ_regs */
! 494: + 0x63, /* miscreg */
! 495: + 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
! 496: + 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 497: + 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
! 498: + 0xff, /* crtc_regs */
! 499: + 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
! 500: + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
! 501: + 0x01, 0x00, 0x03, 0x00, /* actl_regs */
! 502: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff, /* grdc_regs */
! 503: +},
! 504: +{
! 505: + /* index=0x06 vga mode 0x06 */
! 506: + 80, 24, 8, 0x00, 0x10, /* tw, th-1, ch, slength */
! 507: + 0x01, 0x01, 0x00, 0x06, /* sequ_regs */
! 508: + 0x63, /* miscreg */
! 509: + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
! 510: + 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 511: + 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2,
! 512: + 0xff, /* crtc_regs */
! 513: + 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
! 514: + 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
! 515: + 0x01, 0x00, 0x01, 0x00, /* actl_regs */
! 516: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0xff, /* grdc_regs */
! 517: +},
! 518: +{
! 519: + /* index=0x07 vga mode 0x07 */
! 520: + 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */
! 521: + 0x00, 0x03, 0x00, 0x02, /* sequ_regs */
! 522: + 0x66, /* miscreg */
! 523: + 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
! 524: + 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
! 525: + 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
! 526: + 0xff, /* crtc_regs */
! 527: + 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
! 528: + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
! 529: + 0x0e, 0x00, 0x0f, 0x08, /* actl_regs */
! 530: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff, /* grdc_regs */
! 531: +},
! 532: +{
! 533: + /* index=0x08 no mode defined */
! 534: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 535: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 536: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 537: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 538: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 539: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 540: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 541: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 542: +},
! 543: +{
! 544: + /* index=0x09 no mode defined */
! 545: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 546: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 547: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 548: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 549: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 550: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 551: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 552: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 553: +},
! 554: +{
! 555: + /* index=0x0a no mode defined */
! 556: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 557: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 558: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 559: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 560: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 561: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 562: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 563: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 564: +},
! 565: +{
! 566: + /* index=0x0b no mode defined */
! 567: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 568: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 569: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 570: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 571: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 572: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 573: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 574: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 575: +},
! 576: +{
! 577: + /* index=0x0c no mode defined */
! 578: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 579: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 580: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 581: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 582: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 583: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 584: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 585: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 586: +},
! 587: +{
! 588: + /* index=0x0d vga mode 0x0d */
! 589: + 40, 24, 8, 0x00, 0x20, /* tw, th-1, ch, slength */
! 590: + 0x09, 0x0f, 0x00, 0x06, /* sequ_regs */
! 591: + 0x63, /* miscreg */
! 592: + 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
! 593: + 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 594: + 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3,
! 595: + 0xff, /* crtc_regs */
! 596: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
! 597: + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
! 598: + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
! 599: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
! 600: +},
! 601: +{
! 602: + /* index=0x0e vga mode 0x0e */
! 603: + 80, 24, 8, 0x00, 0x40, /* tw, th-1, ch, slength */
! 604: + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
! 605: + 0x63, /* miscreg */
! 606: + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
! 607: + 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 608: + 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3,
! 609: + 0xff, /* crtc_regs */
! 610: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
! 611: + 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
! 612: + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
! 613: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
! 614: +},
! 615: +{
! 616: + /* index=0x0f no mode defined */
! 617: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 618: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 619: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 620: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 621: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 622: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 623: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 624: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 625: +},
! 626: +{
! 627: + /* index=0x10 no mode defined */
! 628: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 629: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 630: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 631: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 632: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 633: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 634: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 635: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 636: +},
! 637: +{
! 638: + /* index=0x11 vga mode 0x0f */
! 639: + 80, 24, 14, 0x00, 0x80, /* tw, th-1, ch, slength */
! 640: + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
! 641: + 0xa3, /* miscreg */
! 642: + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
! 643: + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 644: + 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
! 645: + 0xff, /* crtc_regs */
! 646: + 0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
! 647: + 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
! 648: + 0x01, 0x00, 0x01, 0x00, /* actl_regs */
! 649: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
! 650: +},
! 651: +{
! 652: + /* index=0x12 vga mode 0x10 */
! 653: + 80, 24, 14, 0x00, 0x80, /* tw, th-1, ch, slength */
! 654: + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
! 655: + 0xa3, /* miscreg */
! 656: + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
! 657: + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 658: + 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
! 659: + 0xff, /* crtc_regs */
! 660: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
! 661: + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
! 662: + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
! 663: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
! 664: +},
! 665: +{
! 666: + /* index=0x13 no mode defined */
! 667: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 668: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 669: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 670: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 671: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 672: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 673: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 674: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 675: +},
! 676: +{
! 677: + /* index=0x14 no mode defined */
! 678: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 679: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 680: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 681: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 682: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 683: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 684: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 685: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 686: +},
! 687: +{
! 688: + /* index=0x15 no mode defined */
! 689: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 690: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 691: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 692: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 693: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 694: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 695: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 696: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 697: +},
! 698: +{
! 699: + /* index=0x16 no mode defined */
! 700: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 701: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 702: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 703: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 704: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 705: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 706: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 707: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 708: +},
! 709: +{
! 710: + /* index=0x17 vga mode 0x01 */
! 711: + 40, 24, 16, 0x00, 0x08, /* tw, th-1, ch, slength */
! 712: + 0x08, 0x03, 0x00, 0x02, /* sequ_regs */
! 713: + 0x67, /* miscreg */
! 714: + 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
! 715: + 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
! 716: + 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
! 717: + 0xff, /* crtc_regs */
! 718: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
! 719: + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
! 720: + 0x0c, 0x00, 0x0f, 0x08, /* actl_regs */
! 721: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff, /* grdc_regs */
! 722: +},
! 723: +{
! 724: + /* index=0x18 vga mode 0x03 */
! 725: + 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */
! 726: + 0x00, 0x03, 0x00, 0x02, /* sequ_regs */
! 727: + 0x67, /* miscreg */
! 728: + 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
! 729: + 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
! 730: + 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
! 731: + 0xff, /* crtc_regs */
! 732: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
! 733: + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
! 734: + 0x0c, 0x00, 0x0f, 0x08, /* actl_regs */
! 735: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff, /* grdc_regs */
! 736: +},
! 737: +{
! 738: + /* index=0x19 vga mode 0x07 */
! 739: + 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */
! 740: + 0x00, 0x03, 0x00, 0x02, /* sequ_regs */
! 741: + 0x66, /* miscreg */
! 742: + 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
! 743: + 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
! 744: + 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
! 745: + 0xff, /* crtc_regs */
! 746: + 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
! 747: + 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
! 748: + 0x0e, 0x00, 0x0f, 0x08, /* actl_regs */
! 749: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff, /* grdc_regs */
! 750: +},
! 751: +{
! 752: + /* index=0x1a vga mode 0x11 */
! 753: + 80, 29, 16, 0x00, 0x00, /* tw, th-1, ch, slength */
! 754: + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
! 755: + 0xe3, /* miscreg */
! 756: + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
! 757: + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 758: + 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
! 759: + 0xff, /* crtc_regs */
! 760: + 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
! 761: + 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
! 762: + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
! 763: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
! 764: +},
! 765: +{
! 766: + /* index=0x1b vga mode 0x12 */
! 767: + 80, 29, 16, 0x00, 0x00, /* tw, th-1, ch, slength */
! 768: + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
! 769: + 0xe3, /* miscreg */
! 770: + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
! 771: + 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 772: + 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
! 773: + 0xff, /* crtc_regs */
! 774: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
! 775: + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
! 776: + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
! 777: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
! 778: +},
! 779: +{
! 780: + /* index=0x1c vga mode 0x13 */
! 781: + 40, 24, 8, 0x00, 0x00, /* tw, th-1, ch, slength */
! 782: + 0x01, 0x0f, 0x00, 0x0e, /* sequ_regs */
! 783: + 0x63, /* miscreg */
! 784: + 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
! 785: + 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 786: + 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3,
! 787: + 0xff, /* crtc_regs */
! 788: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
! 789: + 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
! 790: + 0x41, 0x00, 0x0f, 0x00, /* actl_regs */
! 791: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff, /* grdc_regs */
! 792: +},
! 793: +{
! 794: + /* index=0x1d vga mode 0x6a */
! 795: + 100, 36, 16, 0x00, 0x00, /* tw, th-1, ch, slength */
! 796: + 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */
! 797: + 0xe3, /* miscreg */
! 798: + 0x7f, 0x63, 0x63, 0x83, 0x6b, 0x1b, 0x72, 0xf0,
! 799: + 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
! 800: + 0x59, 0x8d, 0x57, 0x32, 0x00, 0x57, 0x73, 0xe3,
! 801: + 0xff, /* crtc_regs */
! 802: + 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
! 803: + 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
! 804: + 0x01, 0x00, 0x0f, 0x00, /* actl_regs */
! 805: + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */
! 806: +},
! 807: +};
! 808: +
! 809: /* Mono */
! 810: static Bit8u palette0[63+1][3]=
! 811: {
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.