blob: c0aea0401579ba167e2e5bc639b509544174f594 [file] [log] [blame]
Kevin O'Connor1f2c3072009-05-06 23:35:59 -04001// Tables used by VGA bios
2//
3// Copyright (C) 2009 Kevin O'Connor <kevin@koconnor.net>
4// Copyright (C) 2001-2008 the LGPL VGABios developers Team
5//
6// This file may be distributed under the terms of the GNU LGPLv3 license.
7
8#include "vgatables.h"
9
10u16 video_save_pointer_table[14] VAR16;
11
12struct vgamodes_s vga_modes[MODE_MAX + 1] VAR16 = { //mode class model bits sstart pelm dac
13 {0x00, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02},
14 {0x01, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02},
15 {0x02, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02},
16 {0x03, TEXT, CTEXT, 4, 0xB800, 0xFF, 0x02},
17 {0x04, GRAPH, CGA, 2, 0xB800, 0xFF, 0x01},
18 {0x05, GRAPH, CGA, 2, 0xB800, 0xFF, 0x01},
19 {0x06, GRAPH, CGA, 1, 0xB800, 0xFF, 0x01},
20 {0x07, TEXT, MTEXT, 4, 0xB000, 0xFF, 0x00},
21 {0x0D, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x01},
22 {0x0E, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x01},
23 {0x0F, GRAPH, PLANAR1, 1, 0xA000, 0xFF, 0x00},
24 {0x10, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02},
25 {0x11, GRAPH, PLANAR1, 1, 0xA000, 0xFF, 0x02},
26 {0x12, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02},
27 {0x13, GRAPH, LINEAR8, 8, 0xA000, 0xFF, 0x03},
28 {0x6A, GRAPH, PLANAR4, 4, 0xA000, 0xFF, 0x02}
29};
30
31/* convert index in vga_modes[] to index in video_param_table[] */
32u8 line_to_vpti[MODE_MAX + 1] VAR16 = {
33 0x17, 0x17, 0x18, 0x18, 0x04, 0x05, 0x06, 0x07,
34 0x0d, 0x0e, 0x11, 0x12, 0x1a, 0x1b, 0x1c, 0x1d,
35};
36
37u8 dac_regs[DAC_MAX_MODEL + 1] VAR16 = { 0x3f, 0x3f, 0x3f, 0xff };
38
39struct VideoParamTableEntry_s video_param_table[30] VAR16 = {
40 // index=0x00 no mode defined
41 {},
42 // index=0x01 no mode defined
43 {},
44 // index=0x02 no mode defined
45 {},
46 // index=0x03 no mode defined
47 {},
48 // index=0x04 vga mode 0x04
49 { 40, 24, 8, 0x0800, /* tw, th-1, ch, slength */
50 { 0x09, 0x03, 0x00, 0x02 }, /* sequ_regs */
51 0x63, /* miscreg */
52 { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
53 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
54 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
55 0xff }, /* crtc_regs */
56 { 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
57 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
58 0x01, 0x00, 0x03, 0x00 }, /* actl_regs */
59 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff }, /* grdc_regs */
60 },
61 /* index=0x05 vga mode 0x05 */
62 { 40, 24, 8, 0x0800, /* tw, th-1, ch, slength */
63 { 0x09, 0x03, 0x00, 0x02 }, /* sequ_regs */
64 0x63, /* miscreg */
65 { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
66 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
67 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
68 0xff }, /* crtc_regs */
69 { 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
70 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
71 0x01, 0x00, 0x03, 0x00 }, /* actl_regs */
72 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff }, /* grdc_regs */
73 },
74 /* index=0x06 vga mode 0x06 */
75 { 80, 24, 8, 0x1000, /* tw, th-1, ch, slength */
76 { 0x01, 0x01, 0x00, 0x06 }, /* sequ_regs */
77 0x63, /* miscreg */
78 { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
79 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2,
81 0xff }, /* crtc_regs */
82 { 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
83 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
84 0x01, 0x00, 0x01, 0x00 }, /* actl_regs */
85 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0xff }, /* grdc_regs */
86 },
87 /* index=0x07 vga mode 0x07 */
88 { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */
89 { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */
90 0x66, /* miscreg */
91 { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
92 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
93 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
94 0xff }, /* crtc_regs */
95 { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
96 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
97 0x0e, 0x00, 0x0f, 0x08 }, /* actl_regs */
98 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff }, /* grdc_regs */
99 },
100 /* index=0x08 no mode defined */
101 {},
102 /* index=0x09 no mode defined */
103 {},
104 /* index=0x0a no mode defined */
105 {},
106 /* index=0x0b no mode defined */
107 {},
108 /* index=0x0c no mode defined */
109 {},
110 /* index=0x0d vga mode 0x0d */
111 { 40, 24, 8, 0x2000, /* tw, th-1, ch, slength */
112 { 0x09, 0x0f, 0x00, 0x06 }, /* sequ_regs */
113 0x63, /* miscreg */
114 { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
115 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
116 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3,
117 0xff }, /* crtc_regs */
118 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
119 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
120 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
121 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
122 },
123 /* index=0x0e vga mode 0x0e */
124 { 80, 24, 8, 0x4000, /* tw, th-1, ch, slength */
125 { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
126 0x63, /* miscreg */
127 { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
128 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
129 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3,
130 0xff }, /* crtc_regs */
131 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
132 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
133 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
134 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
135 },
136 /* index=0x0f no mode defined */
137 {},
138 /* index=0x10 no mode defined */
139 {},
140 /* index=0x11 vga mode 0x0f */
141 { 80, 24, 14, 0x8000, /* tw, th-1, ch, slength */
142 { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
143 0xa3, /* miscreg */
144 { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
145 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
146 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
147 0xff }, /* crtc_regs */
148 { 0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
149 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
150 0x01, 0x00, 0x01, 0x00 }, /* actl_regs */
151 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
152 },
153 /* index=0x12 vga mode 0x10 */
154 { 80, 24, 14, 0x8000, /* tw, th-1, ch, slength */
155 { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
156 0xa3, /* miscreg */
157 { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
158 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
159 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
160 0xff }, /* crtc_regs */
161 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
162 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
163 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
164 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
165 },
166 /* index=0x13 no mode defined */
167 {},
168 /* index=0x14 no mode defined */
169 {},
170 /* index=0x15 no mode defined */
171 {},
172 /* index=0x16 no mode defined */
173 {},
174 /* index=0x17 vga mode 0x01 */
175 { 40, 24, 16, 0x0800, /* tw, th-1, ch, slength */
176 { 0x08, 0x03, 0x00, 0x02 }, /* sequ_regs */
177 0x67, /* miscreg */
178 { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
179 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
180 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
181 0xff }, /* crtc_regs */
182 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
183 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
184 0x0c, 0x00, 0x0f, 0x08 }, /* actl_regs */
185 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff }, /* grdc_regs */
186 },
187 /* index=0x18 vga mode 0x03 */
188 { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */
189 { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */
190 0x67, /* miscreg */
191 { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
192 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
193 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
194 0xff }, /* crtc_regs */
195 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
196 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
197 0x0c, 0x00, 0x0f, 0x08 }, /* actl_regs */
198 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff }, /* grdc_regs */
199 },
200 /* index=0x19 vga mode 0x07 */
201 { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */
202 { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */
203 0x66, /* miscreg */
204 { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
205 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
206 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
207 0xff }, /* crtc_regs */
208 { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
209 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
210 0x0e, 0x00, 0x0f, 0x08 }, /* actl_regs */
211 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff }, /* grdc_regs */
212 },
213 /* index=0x1a vga mode 0x11 */
214 { 80, 29, 16, 0x0000, /* tw, th-1, ch, slength */
215 { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
216 0xe3, /* miscreg */
217 { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
218 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
219 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
220 0xff }, /* crtc_regs */
221 { 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
222 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
223 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
224 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
225 },
226 /* index=0x1b vga mode 0x12 */
227 { 80, 29, 16, 0x0000, /* tw, th-1, ch, slength */
228 { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
229 0xe3, /* miscreg */
230 { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
231 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
232 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
233 0xff }, /* crtc_regs */
234 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
235 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
236 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
237 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
238 },
239 /* index=0x1c vga mode 0x13 */
240 { 40, 24, 8, 0x0000, /* tw, th-1, ch, slength */
241 { 0x01, 0x0f, 0x00, 0x0e }, /* sequ_regs */
242 0x63, /* miscreg */
243 { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
244 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
245 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3,
246 0xff }, /* crtc_regs */
247 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
248 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
249 0x41, 0x00, 0x0f, 0x00 }, /* actl_regs */
250 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff }, /* grdc_regs */
251 },
252 /* index=0x1d vga mode 0x6a */
253 { 100, 36, 16, 0x0000, /* tw, th-1, ch, slength */
254 { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
255 0xe3, /* miscreg */
256 { 0x7f, 0x63, 0x63, 0x83, 0x6b, 0x1b, 0x72, 0xf0,
257 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
258 0x59, 0x8d, 0x57, 0x32, 0x00, 0x57, 0x73, 0xe3,
259 0xff }, /* crtc_regs */
260 { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
261 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
262 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
263 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
264 },
265};
266
267/* Mono */
268u8 palette0[] VAR16 = {
269 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
270 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
271 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
272 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f,
273 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
274 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
275 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
276 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f
277};
278
279u8 palette1[] VAR16 = {
280 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
281 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
282 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
283 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
284 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
285 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
286 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
287 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f
288};
289
290u8 palette2[] VAR16 = {
291 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x2a,0x00, 0x2a,0x2a,0x2a,
292 0x00,0x00,0x15, 0x00,0x00,0x3f, 0x00,0x2a,0x15, 0x00,0x2a,0x3f, 0x2a,0x00,0x15, 0x2a,0x00,0x3f, 0x2a,0x2a,0x15, 0x2a,0x2a,0x3f,
293 0x00,0x15,0x00, 0x00,0x15,0x2a, 0x00,0x3f,0x00, 0x00,0x3f,0x2a, 0x2a,0x15,0x00, 0x2a,0x15,0x2a, 0x2a,0x3f,0x00, 0x2a,0x3f,0x2a,
294 0x00,0x15,0x15, 0x00,0x15,0x3f, 0x00,0x3f,0x15, 0x00,0x3f,0x3f, 0x2a,0x15,0x15, 0x2a,0x15,0x3f, 0x2a,0x3f,0x15, 0x2a,0x3f,0x3f,
295 0x15,0x00,0x00, 0x15,0x00,0x2a, 0x15,0x2a,0x00, 0x15,0x2a,0x2a, 0x3f,0x00,0x00, 0x3f,0x00,0x2a, 0x3f,0x2a,0x00, 0x3f,0x2a,0x2a,
296 0x15,0x00,0x15, 0x15,0x00,0x3f, 0x15,0x2a,0x15, 0x15,0x2a,0x3f, 0x3f,0x00,0x15, 0x3f,0x00,0x3f, 0x3f,0x2a,0x15, 0x3f,0x2a,0x3f,
297 0x15,0x15,0x00, 0x15,0x15,0x2a, 0x15,0x3f,0x00, 0x15,0x3f,0x2a, 0x3f,0x15,0x00, 0x3f,0x15,0x2a, 0x3f,0x3f,0x00, 0x3f,0x3f,0x2a,
298 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f
299};
300
301u8 palette3[] VAR16 = {
302 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a, 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
303 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f, 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
304 0x00,0x00,0x00, 0x05,0x05,0x05, 0x08,0x08,0x08, 0x0b,0x0b,0x0b, 0x0e,0x0e,0x0e, 0x11,0x11,0x11, 0x14,0x14,0x14, 0x18,0x18,0x18,
305 0x1c,0x1c,0x1c, 0x20,0x20,0x20, 0x24,0x24,0x24, 0x28,0x28,0x28, 0x2d,0x2d,0x2d, 0x32,0x32,0x32, 0x38,0x38,0x38, 0x3f,0x3f,0x3f,
306 0x00,0x00,0x3f, 0x10,0x00,0x3f, 0x1f,0x00,0x3f, 0x2f,0x00,0x3f, 0x3f,0x00,0x3f, 0x3f,0x00,0x2f, 0x3f,0x00,0x1f, 0x3f,0x00,0x10,
307 0x3f,0x00,0x00, 0x3f,0x10,0x00, 0x3f,0x1f,0x00, 0x3f,0x2f,0x00, 0x3f,0x3f,0x00, 0x2f,0x3f,0x00, 0x1f,0x3f,0x00, 0x10,0x3f,0x00,
308 0x00,0x3f,0x00, 0x00,0x3f,0x10, 0x00,0x3f,0x1f, 0x00,0x3f,0x2f, 0x00,0x3f,0x3f, 0x00,0x2f,0x3f, 0x00,0x1f,0x3f, 0x00,0x10,0x3f,
309 0x1f,0x1f,0x3f, 0x27,0x1f,0x3f, 0x2f,0x1f,0x3f, 0x37,0x1f,0x3f, 0x3f,0x1f,0x3f, 0x3f,0x1f,0x37, 0x3f,0x1f,0x2f, 0x3f,0x1f,0x27,
310
311 0x3f,0x1f,0x1f, 0x3f,0x27,0x1f, 0x3f,0x2f,0x1f, 0x3f,0x37,0x1f, 0x3f,0x3f,0x1f, 0x37,0x3f,0x1f, 0x2f,0x3f,0x1f, 0x27,0x3f,0x1f,
312 0x1f,0x3f,0x1f, 0x1f,0x3f,0x27, 0x1f,0x3f,0x2f, 0x1f,0x3f,0x37, 0x1f,0x3f,0x3f, 0x1f,0x37,0x3f, 0x1f,0x2f,0x3f, 0x1f,0x27,0x3f,
313 0x2d,0x2d,0x3f, 0x31,0x2d,0x3f, 0x36,0x2d,0x3f, 0x3a,0x2d,0x3f, 0x3f,0x2d,0x3f, 0x3f,0x2d,0x3a, 0x3f,0x2d,0x36, 0x3f,0x2d,0x31,
314 0x3f,0x2d,0x2d, 0x3f,0x31,0x2d, 0x3f,0x36,0x2d, 0x3f,0x3a,0x2d, 0x3f,0x3f,0x2d, 0x3a,0x3f,0x2d, 0x36,0x3f,0x2d, 0x31,0x3f,0x2d,
315 0x2d,0x3f,0x2d, 0x2d,0x3f,0x31, 0x2d,0x3f,0x36, 0x2d,0x3f,0x3a, 0x2d,0x3f,0x3f, 0x2d,0x3a,0x3f, 0x2d,0x36,0x3f, 0x2d,0x31,0x3f,
316 0x00,0x00,0x1c, 0x07,0x00,0x1c, 0x0e,0x00,0x1c, 0x15,0x00,0x1c, 0x1c,0x00,0x1c, 0x1c,0x00,0x15, 0x1c,0x00,0x0e, 0x1c,0x00,0x07,
317 0x1c,0x00,0x00, 0x1c,0x07,0x00, 0x1c,0x0e,0x00, 0x1c,0x15,0x00, 0x1c,0x1c,0x00, 0x15,0x1c,0x00, 0x0e,0x1c,0x00, 0x07,0x1c,0x00,
318 0x00,0x1c,0x00, 0x00,0x1c,0x07, 0x00,0x1c,0x0e, 0x00,0x1c,0x15, 0x00,0x1c,0x1c, 0x00,0x15,0x1c, 0x00,0x0e,0x1c, 0x00,0x07,0x1c,
319
320 0x0e,0x0e,0x1c, 0x11,0x0e,0x1c, 0x15,0x0e,0x1c, 0x18,0x0e,0x1c, 0x1c,0x0e,0x1c, 0x1c,0x0e,0x18, 0x1c,0x0e,0x15, 0x1c,0x0e,0x11,
321 0x1c,0x0e,0x0e, 0x1c,0x11,0x0e, 0x1c,0x15,0x0e, 0x1c,0x18,0x0e, 0x1c,0x1c,0x0e, 0x18,0x1c,0x0e, 0x15,0x1c,0x0e, 0x11,0x1c,0x0e,
322 0x0e,0x1c,0x0e, 0x0e,0x1c,0x11, 0x0e,0x1c,0x15, 0x0e,0x1c,0x18, 0x0e,0x1c,0x1c, 0x0e,0x18,0x1c, 0x0e,0x15,0x1c, 0x0e,0x11,0x1c,
323 0x14,0x14,0x1c, 0x16,0x14,0x1c, 0x18,0x14,0x1c, 0x1a,0x14,0x1c, 0x1c,0x14,0x1c, 0x1c,0x14,0x1a, 0x1c,0x14,0x18, 0x1c,0x14,0x16,
324 0x1c,0x14,0x14, 0x1c,0x16,0x14, 0x1c,0x18,0x14, 0x1c,0x1a,0x14, 0x1c,0x1c,0x14, 0x1a,0x1c,0x14, 0x18,0x1c,0x14, 0x16,0x1c,0x14,
325 0x14,0x1c,0x14, 0x14,0x1c,0x16, 0x14,0x1c,0x18, 0x14,0x1c,0x1a, 0x14,0x1c,0x1c, 0x14,0x1a,0x1c, 0x14,0x18,0x1c, 0x14,0x16,0x1c,
326 0x00,0x00,0x10, 0x04,0x00,0x10, 0x08,0x00,0x10, 0x0c,0x00,0x10, 0x10,0x00,0x10, 0x10,0x00,0x0c, 0x10,0x00,0x08, 0x10,0x00,0x04,
327 0x10,0x00,0x00, 0x10,0x04,0x00, 0x10,0x08,0x00, 0x10,0x0c,0x00, 0x10,0x10,0x00, 0x0c,0x10,0x00, 0x08,0x10,0x00, 0x04,0x10,0x00,
328
329 0x00,0x10,0x00, 0x00,0x10,0x04, 0x00,0x10,0x08, 0x00,0x10,0x0c, 0x00,0x10,0x10, 0x00,0x0c,0x10, 0x00,0x08,0x10, 0x00,0x04,0x10,
330 0x08,0x08,0x10, 0x0a,0x08,0x10, 0x0c,0x08,0x10, 0x0e,0x08,0x10, 0x10,0x08,0x10, 0x10,0x08,0x0e, 0x10,0x08,0x0c, 0x10,0x08,0x0a,
331 0x10,0x08,0x08, 0x10,0x0a,0x08, 0x10,0x0c,0x08, 0x10,0x0e,0x08, 0x10,0x10,0x08, 0x0e,0x10,0x08, 0x0c,0x10,0x08, 0x0a,0x10,0x08,
332 0x08,0x10,0x08, 0x08,0x10,0x0a, 0x08,0x10,0x0c, 0x08,0x10,0x0e, 0x08,0x10,0x10, 0x08,0x0e,0x10, 0x08,0x0c,0x10, 0x08,0x0a,0x10,
333 0x0b,0x0b,0x10, 0x0c,0x0b,0x10, 0x0d,0x0b,0x10, 0x0f,0x0b,0x10, 0x10,0x0b,0x10, 0x10,0x0b,0x0f, 0x10,0x0b,0x0d, 0x10,0x0b,0x0c,
334 0x10,0x0b,0x0b, 0x10,0x0c,0x0b, 0x10,0x0d,0x0b, 0x10,0x0f,0x0b, 0x10,0x10,0x0b, 0x0f,0x10,0x0b, 0x0d,0x10,0x0b, 0x0c,0x10,0x0b,
335 0x0b,0x10,0x0b, 0x0b,0x10,0x0c, 0x0b,0x10,0x0d, 0x0b,0x10,0x0f, 0x0b,0x10,0x10, 0x0b,0x0f,0x10, 0x0b,0x0d,0x10, 0x0b,0x0c,0x10,
336 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00
337};
338
339u8 static_functionality[0x10] VAR16 = {
340 /* 0 */ 0xff, // All modes supported #1
341 /* 1 */ 0xe0, // All modes supported #2
342 /* 2 */ 0x0f, // All modes supported #3
343 /* 3 */ 0x00, 0x00, 0x00, 0x00, // reserved
344 /* 7 */ 0x07, // 200, 350, 400 scan lines
345 /* 8 */ 0x02, // mamimum number of visible charsets in text mode
346 /* 9 */ 0x08, // total number of charset blocks in text mode
347 /* a */ 0xe7, // Change to add new functions
348 /* b */ 0x0c, // Change to add new functions
349 /* c */ 0x00, // reserved
350 /* d */ 0x00, // reserved
351 /* e */ 0x00, // Change to add new functions
352 /* f */ 0x00 // reserved
353};