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