1 /* 2 * 3 * BIOS Memory 4 * 5 */ 6 #define BIOSMEM_SEG 0x40 7 8 #define BIOSMEM_INITIAL_MODE 0x10 9 #define BIOSMEM_CURRENT_MODE 0x49 10 #define BIOSMEM_NB_COLS 0x4A 11 #define BIOSMEM_PAGE_SIZE 0x4C 12 #define BIOSMEM_CURRENT_START 0x4E 13 #define BIOSMEM_CURSOR_POS 0x50 14 #define BIOSMEM_CURSOR_TYPE 0x60 15 #define BIOSMEM_CURRENT_PAGE 0x62 16 #define BIOSMEM_CRTC_ADDRESS 0x63 17 #define BIOSMEM_CURRENT_MSR 0x65 18 #define BIOSMEM_CURRENT_PAL 0x66 19 #define BIOSMEM_NB_ROWS 0x84 20 #define BIOSMEM_CHAR_HEIGHT 0x85 21 #define BIOSMEM_VIDEO_CTL 0x87 22 #define BIOSMEM_SWITCHES 0x88 23 #define BIOSMEM_MODESET_CTL 0x89 24 #define BIOSMEM_DCC_INDEX 0x8A 25 #define BIOSMEM_VS_POINTER 0xA8 26 #define BIOSMEM_VBE_FLAG 0xB9 27 #define BIOSMEM_VBE_MODE 0xBA 28 #define BIOSMEM_VBE_POWER 0xBC 29 30 31 /* 32 * 33 * VGA registers 34 * 35 */ 36 #define VGAREG_ACTL_ADDRESS 0x3c0 37 #define VGAREG_ACTL_WRITE_DATA 0x3c0 38 #define VGAREG_ACTL_READ_DATA 0x3c1 39 40 #define VGAREG_INPUT_STATUS 0x3c2 41 #define VGAREG_WRITE_MISC_OUTPUT 0x3c2 42 #define VGAREG_VIDEO_ENABLE 0x3c3 43 #define VGAREG_SEQU_ADDRESS 0x3c4 44 #define VGAREG_SEQU_DATA 0x3c5 45 46 #define VGAREG_PEL_MASK 0x3c6 47 #define VGAREG_DAC_STATE 0x3c7 48 #define VGAREG_DAC_READ_ADDRESS 0x3c7 49 #define VGAREG_DAC_WRITE_ADDRESS 0x3c8 50 #define VGAREG_DAC_DATA 0x3c9 51 52 #define VGAREG_READ_FEATURE_CTL 0x3ca 53 #define VGAREG_READ_MISC_OUTPUT 0x3cc 54 55 #define VGAREG_GRDC_ADDRESS 0x3ce 56 #define VGAREG_GRDC_DATA 0x3cf 57 58 #define VGAREG_MDA_CRTC_ADDRESS 0x3b4 59 #define VGAREG_MDA_CRTC_DATA 0x3b5 60 #define VGAREG_VGA_CRTC_ADDRESS 0x3d4 61 #define VGAREG_VGA_CRTC_DATA 0x3d5 62 63 #define VGAREG_MDA_WRITE_FEATURE_CTL 0x3ba 64 #define VGAREG_VGA_WRITE_FEATURE_CTL 0x3da 65 #define VGAREG_ACTL_RESET 0x3da 66 67 #define VGAREG_MDA_MODECTL 0x3b8 68 #define VGAREG_CGA_MODECTL 0x3d8 69 #define VGAREG_CGA_PALETTE 0x3d9 70 71 /* Video memory */ 72 #define VGAMEM_GRAPH 0xA000 73 #define VGAMEM_CTEXT 0xB800 74 #define VGAMEM_MTEXT 0xB000 75 76 /* 77 * 78 * Tables of default values for each mode 79 * 80 */ 81 #define MODE_MAX 15 82 #define TEXT 0x00 83 #define GRAPH 0x01 84 85 #define CTEXT 0x00 86 #define MTEXT 0x01 87 #define CGA 0x02 88 #define PLANAR1 0x03 89 #define PLANAR4 0x04 90 #define LINEAR8 0x05 91 92 // for SVGA 93 #define LINEAR15 0x10 94 #define LINEAR16 0x11 95 #define LINEAR24 0x12 96 #define LINEAR32 0x13 97 98 typedef struct 99 {Bit8u svgamode; 100 Bit8u class; /* TEXT, GRAPH */ 101 Bit8u memmodel; /* CTEXT,MTEXT,CGA,PL1,PL2,PL4,P8,P15,P16,P24,P32 */ 102 Bit8u pixbits; 103 Bit16u sstart; 104 Bit8u pelmask; 105 Bit8u dacmodel; /* 0 1 2 3 */ 106 } VGAMODES; 107 108 static VGAMODES vga_modes[MODE_MAX+1]= 109 {//mode class model bits sstart pelm dac 110 {0x00, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02}, 111 {0x01, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02}, 112 {0x02, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02}, 113 {0x03, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02}, 114 {0x04, GRAPH, CGA, 2, 0xB800, 0xFF, 0x01}, 115 {0x05, GRAPH, CGA, 2, 0xB800, 0xFF, 0x01}, 116 {0x06, GRAPH, CGA, 1, 0xB800, 0xFF, 0x01}, 117 {0x07, TEXT, MTEXT, 4, 0xB000, 0xFF, 0x00}, 118 {0x0D, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x01}, 119 {0x0E, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x01}, 120 {0x0F, GRAPH, PLANAR1, 1, 0xA000, 0xFF, 0x00}, 121 {0x10, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02}, 122 {0x11, GRAPH, PLANAR1, 1, 0xA000, 0xFF, 0x02}, 123 {0x12, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02}, 124 {0x13, GRAPH, LINEAR8, 8, 0xA000, 0xFF, 0x03}, 125 {0x6A, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02} 126 }; 127 128 /* convert index in vga_modes[] to index in video_param_table[] */ 129 static Bit8u line_to_vpti[MODE_MAX+1]={ 130 0x17, 0x17, 0x18, 0x18, 0x04, 0x05, 0x06, 0x07, 131 0x0d, 0x0e, 0x11, 0x12, 0x1a, 0x1b, 0x1c, 0x1d, 132 }; 133 134 /* Default Palette */ 135 #define DAC_MAX_MODEL 3 136 137 static Bit8u dac_regs[DAC_MAX_MODEL+1]= 138 {0x3f,0x3f,0x3f,0xff}; 139 140 /* standard BIOS Video Parameter Table */ 141 typedef struct { 142 Bit8u twidth; 143 Bit8u theightm1; 144 Bit8u cheight; 145 Bit8u slength_l; 146 Bit8u slength_h; 147 Bit8u sequ_regs[4]; 148 Bit8u miscreg; 149 Bit8u crtc_regs[25]; 150 Bit8u actl_regs[20]; 151 Bit8u grdc_regs[9]; 152 } VideoParamTableEntry; 153 154 static VideoParamTableEntry video_param_table[30] = { 155 { 156 /* index=0x00 no mode defined */ 157 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 158 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 159 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 160 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 161 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 162 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 163 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 164 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 165 }, 166 { 167 /* index=0x01 no mode defined */ 168 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 169 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 170 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 171 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 172 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 173 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 174 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 176 }, 177 { 178 /* index=0x02 no mode defined */ 179 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 180 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 181 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 182 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 183 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 184 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 185 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 186 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 187 }, 188 { 189 /* index=0x03 no mode defined */ 190 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 191 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 192 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 193 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 194 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 195 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 196 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 197 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 198 }, 199 { 200 /* index=0x04 vga mode 0x04 */ 201 40, 24, 8, 0x00, 0x08, /* tw, th-1, ch, slength */ 202 0x09, 0x03, 0x00, 0x02, /* sequ_regs */ 203 0x63, /* miscreg */ 204 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f, 205 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 206 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2, 207 0xff, /* crtc_regs */ 208 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07, 209 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 210 0x01, 0x00, 0x03, 0x00, /* actl_regs */ 211 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff, /* grdc_regs */ 212 }, 213 { 214 /* index=0x05 vga mode 0x05 */ 215 40, 24, 8, 0x00, 0x08, /* tw, th-1, ch, slength */ 216 0x09, 0x03, 0x00, 0x02, /* sequ_regs */ 217 0x63, /* miscreg */ 218 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f, 219 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 220 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2, 221 0xff, /* crtc_regs */ 222 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07, 223 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 224 0x01, 0x00, 0x03, 0x00, /* actl_regs */ 225 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff, /* grdc_regs */ 226 }, 227 { 228 /* index=0x06 vga mode 0x06 */ 229 80, 24, 8, 0x00, 0x10, /* tw, th-1, ch, slength */ 230 0x01, 0x01, 0x00, 0x06, /* sequ_regs */ 231 0x63, /* miscreg */ 232 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, 233 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 234 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2, 235 0xff, /* crtc_regs */ 236 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 237 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 238 0x01, 0x00, 0x01, 0x00, /* actl_regs */ 239 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0xff, /* grdc_regs */ 240 }, 241 { 242 /* index=0x07 vga mode 0x07 */ 243 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */ 244 0x00, 0x03, 0x00, 0x02, /* sequ_regs */ 245 0x66, /* miscreg */ 246 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f, 247 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00, 248 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3, 249 0xff, /* crtc_regs */ 250 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 251 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 252 0x0e, 0x00, 0x0f, 0x08, /* actl_regs */ 253 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff, /* grdc_regs */ 254 }, 255 { 256 /* index=0x08 no mode defined */ 257 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 258 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 259 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 260 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 261 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 262 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 263 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 264 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 265 }, 266 { 267 /* index=0x09 no mode defined */ 268 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 269 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 270 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 271 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 272 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 273 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 274 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 275 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 276 }, 277 { 278 /* index=0x0a no mode defined */ 279 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 280 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 281 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 282 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 283 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 284 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 285 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 286 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 287 }, 288 { 289 /* index=0x0b no mode defined */ 290 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 291 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 292 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 293 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 294 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 295 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 296 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 297 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 298 }, 299 { 300 /* index=0x0c no mode defined */ 301 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 302 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 303 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 304 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 305 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 306 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 307 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 308 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 309 }, 310 { 311 /* index=0x0d vga mode 0x0d */ 312 40, 24, 8, 0x00, 0x20, /* tw, th-1, ch, slength */ 313 0x09, 0x0f, 0x00, 0x06, /* sequ_regs */ 314 0x63, /* miscreg */ 315 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f, 316 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 317 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3, 318 0xff, /* crtc_regs */ 319 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 320 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 321 0x01, 0x00, 0x0f, 0x00, /* actl_regs */ 322 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */ 323 }, 324 { 325 /* index=0x0e vga mode 0x0e */ 326 80, 24, 8, 0x00, 0x40, /* tw, th-1, ch, slength */ 327 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */ 328 0x63, /* miscreg */ 329 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, 330 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 331 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3, 332 0xff, /* crtc_regs */ 333 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 334 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 335 0x01, 0x00, 0x0f, 0x00, /* actl_regs */ 336 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */ 337 }, 338 { 339 /* index=0x0f no mode defined */ 340 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 341 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 342 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 343 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 344 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 345 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 346 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 347 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 348 }, 349 { 350 /* index=0x10 no mode defined */ 351 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 352 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 353 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 354 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 355 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 356 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 357 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 358 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 359 }, 360 { 361 /* index=0x11 vga mode 0x0f */ 362 80, 24, 14, 0x00, 0x80, /* tw, th-1, ch, slength */ 363 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */ 364 0xa3, /* miscreg */ 365 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, 366 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 367 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3, 368 0xff, /* crtc_regs */ 369 0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 370 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 371 0x01, 0x00, 0x01, 0x00, /* actl_regs */ 372 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */ 373 }, 374 { 375 /* index=0x12 vga mode 0x10 */ 376 80, 24, 14, 0x00, 0x80, /* tw, th-1, ch, slength */ 377 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */ 378 0xa3, /* miscreg */ 379 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, 380 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 381 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3, 382 0xff, /* crtc_regs */ 383 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 384 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 385 0x01, 0x00, 0x0f, 0x00, /* actl_regs */ 386 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */ 387 }, 388 { 389 /* index=0x13 no mode defined */ 390 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 391 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 392 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 393 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 394 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 395 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 396 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 397 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 398 }, 399 { 400 /* index=0x14 no mode defined */ 401 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 402 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 403 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 404 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 405 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 406 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 407 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 408 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 409 }, 410 { 411 /* index=0x15 no mode defined */ 412 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 413 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 414 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 415 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 416 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 417 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 418 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 419 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 420 }, 421 { 422 /* index=0x16 no mode defined */ 423 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 424 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 425 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 426 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 427 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 428 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 429 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 430 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 431 }, 432 { 433 /* index=0x17 vga mode 0x01 */ 434 40, 24, 16, 0x00, 0x08, /* tw, th-1, ch, slength */ 435 0x08, 0x03, 0x00, 0x02, /* sequ_regs */ 436 0x67, /* miscreg */ 437 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f, 438 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00, 439 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3, 440 0xff, /* crtc_regs */ 441 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 442 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 443 0x0c, 0x00, 0x0f, 0x08, /* actl_regs */ 444 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff, /* grdc_regs */ 445 }, 446 { 447 /* index=0x18 vga mode 0x03 */ 448 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */ 449 0x00, 0x03, 0x00, 0x02, /* sequ_regs */ 450 0x67, /* miscreg */ 451 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f, 452 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00, 453 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3, 454 0xff, /* crtc_regs */ 455 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 456 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 457 0x0c, 0x00, 0x0f, 0x08, /* actl_regs */ 458 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff, /* grdc_regs */ 459 }, 460 { 461 /* index=0x19 vga mode 0x07 */ 462 80, 24, 16, 0x00, 0x10, /* tw, th-1, ch, slength */ 463 0x00, 0x03, 0x00, 0x02, /* sequ_regs */ 464 0x66, /* miscreg */ 465 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f, 466 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00, 467 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3, 468 0xff, /* crtc_regs */ 469 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 470 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 471 0x0e, 0x00, 0x0f, 0x08, /* actl_regs */ 472 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff, /* grdc_regs */ 473 }, 474 { 475 /* index=0x1a vga mode 0x11 */ 476 80, 29, 16, 0x00, 0x00, /* tw, th-1, ch, slength */ 477 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */ 478 0xe3, /* miscreg */ 479 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e, 480 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 481 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3, 482 0xff, /* crtc_regs */ 483 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 484 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 485 0x01, 0x00, 0x0f, 0x00, /* actl_regs */ 486 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */ 487 }, 488 { 489 /* index=0x1b vga mode 0x12 */ 490 80, 29, 16, 0x00, 0x00, /* tw, th-1, ch, slength */ 491 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */ 492 0xe3, /* miscreg */ 493 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e, 494 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 495 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3, 496 0xff, /* crtc_regs */ 497 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 498 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 499 0x01, 0x00, 0x0f, 0x00, /* actl_regs */ 500 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */ 501 }, 502 { 503 /* index=0x1c vga mode 0x13 */ 504 40, 24, 8, 0x00, 0x00, /* tw, th-1, ch, slength */ 505 0x01, 0x0f, 0x00, 0x0e, /* sequ_regs */ 506 0x63, /* miscreg */ 507 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f, 508 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 509 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3, 510 0xff, /* crtc_regs */ 511 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 512 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, 513 0x41, 0x00, 0x0f, 0x00, /* actl_regs */ 514 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff, /* grdc_regs */ 515 }, 516 { 517 /* index=0x1d vga mode 0x6a */ 518 100, 36, 16, 0x00, 0x00, /* tw, th-1, ch, slength */ 519 0x01, 0x0f, 0x00, 0x06, /* sequ_regs */ 520 0xe3, /* miscreg */ 521 0x7f, 0x63, 0x63, 0x83, 0x6b, 0x1b, 0x72, 0xf0, 522 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 523 0x59, 0x8d, 0x57, 0x32, 0x00, 0x57, 0x73, 0xe3, 524 0xff, /* crtc_regs */ 525 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07, 526 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 527 0x01, 0x00, 0x0f, 0x00, /* actl_regs */ 528 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff, /* grdc_regs */ 529 }, 530 }; 531 532 /* Mono */ 533 static Bit8u palette0[63+1][3]= 534 { 535 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 536 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 537 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 538 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 539 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 540 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 541 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 542 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f 543 }; 544 545 static Bit8u palette1[63+1][3]= 546 { 547 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, 548 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, 549 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f, 550 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f, 551 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, 552 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, 553 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f, 554 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f 555 }; 556 557 static Bit8u palette2[63+1][3]= 558 { 559 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x2a,0x00, 0x2a,0x2a,0x2a, 560 0x00,0x00,0x15, 0x00,0x00,0x3f, 0x00,0x2a,0x15, 0x00,0x2a,0x3f, 0x2a,0x00,0x15, 0x2a,0x00,0x3f, 0x2a,0x2a,0x15, 0x2a,0x2a,0x3f, 561 0x00,0x15,0x00, 0x00,0x15,0x2a, 0x00,0x3f,0x00, 0x00,0x3f,0x2a, 0x2a,0x15,0x00, 0x2a,0x15,0x2a, 0x2a,0x3f,0x00, 0x2a,0x3f,0x2a, 562 0x00,0x15,0x15, 0x00,0x15,0x3f, 0x00,0x3f,0x15, 0x00,0x3f,0x3f, 0x2a,0x15,0x15, 0x2a,0x15,0x3f, 0x2a,0x3f,0x15, 0x2a,0x3f,0x3f, 563 0x15,0x00,0x00, 0x15,0x00,0x2a, 0x15,0x2a,0x00, 0x15,0x2a,0x2a, 0x3f,0x00,0x00, 0x3f,0x00,0x2a, 0x3f,0x2a,0x00, 0x3f,0x2a,0x2a, 564 0x15,0x00,0x15, 0x15,0x00,0x3f, 0x15,0x2a,0x15, 0x15,0x2a,0x3f, 0x3f,0x00,0x15, 0x3f,0x00,0x3f, 0x3f,0x2a,0x15, 0x3f,0x2a,0x3f, 565 0x15,0x15,0x00, 0x15,0x15,0x2a, 0x15,0x3f,0x00, 0x15,0x3f,0x2a, 0x3f,0x15,0x00, 0x3f,0x15,0x2a, 0x3f,0x3f,0x00, 0x3f,0x3f,0x2a, 566 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f 567 }; 568 569 static Bit8u palette3[256][3]= 570 { 571 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a, 572 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f, 573 0x00,0x00,0x00, 0x05,0x05,0x05, 0x08,0x08,0x08, 0x0b,0x0b,0x0b, 0x0e,0x0e,0x0e, 0x11,0x11,0x11, 0x14,0x14,0x14, 0x18,0x18,0x18, 574 0x1c,0x1c,0x1c, 0x20,0x20,0x20, 0x24,0x24,0x24, 0x28,0x28,0x28, 0x2d,0x2d,0x2d, 0x32,0x32,0x32, 0x38,0x38,0x38, 0x3f,0x3f,0x3f, 575 0x00,0x00,0x3f, 0x10,0x00,0x3f, 0x1f,0x00,0x3f, 0x2f,0x00,0x3f, 0x3f,0x00,0x3f, 0x3f,0x00,0x2f, 0x3f,0x00,0x1f, 0x3f,0x00,0x10, 576 0x3f,0x00,0x00, 0x3f,0x10,0x00, 0x3f,0x1f,0x00, 0x3f,0x2f,0x00, 0x3f,0x3f,0x00, 0x2f,0x3f,0x00, 0x1f,0x3f,0x00, 0x10,0x3f,0x00, 577 0x00,0x3f,0x00, 0x00,0x3f,0x10, 0x00,0x3f,0x1f, 0x00,0x3f,0x2f, 0x00,0x3f,0x3f, 0x00,0x2f,0x3f, 0x00,0x1f,0x3f, 0x00,0x10,0x3f, 578 0x1f,0x1f,0x3f, 0x27,0x1f,0x3f, 0x2f,0x1f,0x3f, 0x37,0x1f,0x3f, 0x3f,0x1f,0x3f, 0x3f,0x1f,0x37, 0x3f,0x1f,0x2f, 0x3f,0x1f,0x27, 579 580 0x3f,0x1f,0x1f, 0x3f,0x27,0x1f, 0x3f,0x2f,0x1f, 0x3f,0x37,0x1f, 0x3f,0x3f,0x1f, 0x37,0x3f,0x1f, 0x2f,0x3f,0x1f, 0x27,0x3f,0x1f, 581 0x1f,0x3f,0x1f, 0x1f,0x3f,0x27, 0x1f,0x3f,0x2f, 0x1f,0x3f,0x37, 0x1f,0x3f,0x3f, 0x1f,0x37,0x3f, 0x1f,0x2f,0x3f, 0x1f,0x27,0x3f, 582 0x2d,0x2d,0x3f, 0x31,0x2d,0x3f, 0x36,0x2d,0x3f, 0x3a,0x2d,0x3f, 0x3f,0x2d,0x3f, 0x3f,0x2d,0x3a, 0x3f,0x2d,0x36, 0x3f,0x2d,0x31, 583 0x3f,0x2d,0x2d, 0x3f,0x31,0x2d, 0x3f,0x36,0x2d, 0x3f,0x3a,0x2d, 0x3f,0x3f,0x2d, 0x3a,0x3f,0x2d, 0x36,0x3f,0x2d, 0x31,0x3f,0x2d, 584 0x2d,0x3f,0x2d, 0x2d,0x3f,0x31, 0x2d,0x3f,0x36, 0x2d,0x3f,0x3a, 0x2d,0x3f,0x3f, 0x2d,0x3a,0x3f, 0x2d,0x36,0x3f, 0x2d,0x31,0x3f, 585 0x00,0x00,0x1c, 0x07,0x00,0x1c, 0x0e,0x00,0x1c, 0x15,0x00,0x1c, 0x1c,0x00,0x1c, 0x1c,0x00,0x15, 0x1c,0x00,0x0e, 0x1c,0x00,0x07, 586 0x1c,0x00,0x00, 0x1c,0x07,0x00, 0x1c,0x0e,0x00, 0x1c,0x15,0x00, 0x1c,0x1c,0x00, 0x15,0x1c,0x00, 0x0e,0x1c,0x00, 0x07,0x1c,0x00, 587 0x00,0x1c,0x00, 0x00,0x1c,0x07, 0x00,0x1c,0x0e, 0x00,0x1c,0x15, 0x00,0x1c,0x1c, 0x00,0x15,0x1c, 0x00,0x0e,0x1c, 0x00,0x07,0x1c, 588 589 0x0e,0x0e,0x1c, 0x11,0x0e,0x1c, 0x15,0x0e,0x1c, 0x18,0x0e,0x1c, 0x1c,0x0e,0x1c, 0x1c,0x0e,0x18, 0x1c,0x0e,0x15, 0x1c,0x0e,0x11, 590 0x1c,0x0e,0x0e, 0x1c,0x11,0x0e, 0x1c,0x15,0x0e, 0x1c,0x18,0x0e, 0x1c,0x1c,0x0e, 0x18,0x1c,0x0e, 0x15,0x1c,0x0e, 0x11,0x1c,0x0e, 591 0x0e,0x1c,0x0e, 0x0e,0x1c,0x11, 0x0e,0x1c,0x15, 0x0e,0x1c,0x18, 0x0e,0x1c,0x1c, 0x0e,0x18,0x1c, 0x0e,0x15,0x1c, 0x0e,0x11,0x1c, 592 0x14,0x14,0x1c, 0x16,0x14,0x1c, 0x18,0x14,0x1c, 0x1a,0x14,0x1c, 0x1c,0x14,0x1c, 0x1c,0x14,0x1a, 0x1c,0x14,0x18, 0x1c,0x14,0x16, 593 0x1c,0x14,0x14, 0x1c,0x16,0x14, 0x1c,0x18,0x14, 0x1c,0x1a,0x14, 0x1c,0x1c,0x14, 0x1a,0x1c,0x14, 0x18,0x1c,0x14, 0x16,0x1c,0x14, 594 0x14,0x1c,0x14, 0x14,0x1c,0x16, 0x14,0x1c,0x18, 0x14,0x1c,0x1a, 0x14,0x1c,0x1c, 0x14,0x1a,0x1c, 0x14,0x18,0x1c, 0x14,0x16,0x1c, 595 0x00,0x00,0x10, 0x04,0x00,0x10, 0x08,0x00,0x10, 0x0c,0x00,0x10, 0x10,0x00,0x10, 0x10,0x00,0x0c, 0x10,0x00,0x08, 0x10,0x00,0x04, 596 0x10,0x00,0x00, 0x10,0x04,0x00, 0x10,0x08,0x00, 0x10,0x0c,0x00, 0x10,0x10,0x00, 0x0c,0x10,0x00, 0x08,0x10,0x00, 0x04,0x10,0x00, 597 598 0x00,0x10,0x00, 0x00,0x10,0x04, 0x00,0x10,0x08, 0x00,0x10,0x0c, 0x00,0x10,0x10, 0x00,0x0c,0x10, 0x00,0x08,0x10, 0x00,0x04,0x10, 599 0x08,0x08,0x10, 0x0a,0x08,0x10, 0x0c,0x08,0x10, 0x0e,0x08,0x10, 0x10,0x08,0x10, 0x10,0x08,0x0e, 0x10,0x08,0x0c, 0x10,0x08,0x0a, 600 0x10,0x08,0x08, 0x10,0x0a,0x08, 0x10,0x0c,0x08, 0x10,0x0e,0x08, 0x10,0x10,0x08, 0x0e,0x10,0x08, 0x0c,0x10,0x08, 0x0a,0x10,0x08, 601 0x08,0x10,0x08, 0x08,0x10,0x0a, 0x08,0x10,0x0c, 0x08,0x10,0x0e, 0x08,0x10,0x10, 0x08,0x0e,0x10, 0x08,0x0c,0x10, 0x08,0x0a,0x10, 602 0x0b,0x0b,0x10, 0x0c,0x0b,0x10, 0x0d,0x0b,0x10, 0x0f,0x0b,0x10, 0x10,0x0b,0x10, 0x10,0x0b,0x0f, 0x10,0x0b,0x0d, 0x10,0x0b,0x0c, 603 0x10,0x0b,0x0b, 0x10,0x0c,0x0b, 0x10,0x0d,0x0b, 0x10,0x0f,0x0b, 0x10,0x10,0x0b, 0x0f,0x10,0x0b, 0x0d,0x10,0x0b, 0x0c,0x10,0x0b, 604 0x0b,0x10,0x0b, 0x0b,0x10,0x0c, 0x0b,0x10,0x0d, 0x0b,0x10,0x0f, 0x0b,0x10,0x10, 0x0b,0x0f,0x10, 0x0b,0x0d,0x10, 0x0b,0x0c,0x10, 605 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00 606 }; 607 608 static Bit8u static_functionality[0x10]= 609 { 610 /* 0 */ 0xff, // All modes supported #1 611 /* 1 */ 0xe0, // All modes supported #2 612 /* 2 */ 0x0f, // All modes supported #3 613 /* 3 */ 0x00, 0x00, 0x00, 0x00, // reserved 614 /* 7 */ 0x07, // 200, 350, 400 scan lines 615 /* 8 */ 0x02, // mamimum number of visible charsets in text mode 616 /* 9 */ 0x08, // total number of charset blocks in text mode 617 /* a */ 0xe7, // Change to add new functions 618 /* b */ 0x0c, // Change to add new functions 619 /* c */ 0x00, // reserved 620 /* d */ 0x00, // reserved 621 /* e */ 0x00, // Change to add new functions 622 /* f */ 0x00 // reserved 623 }; 624