|
|
1.1 root 1: // Tables used by VGA bios
2: //
3: // Copyright (C) 2009 Kevin O'Connor <[email protected]>
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 "protos.h"
9: #include "vgatables.h" // struct VideoParamTableEntry_s
10:
11: #define ARRAY_SIZE(var) (sizeof(var) / sizeof(var[0]))
12: #define GET_GLOBAL(var) (var)
13: #define VAR16
14:
15: /****************************************************************
16: * Video parameter table
17: ****************************************************************/
18:
19: struct VideoParam_s video_param_table[] VAR16 = {
20: // index=0x00 no mode defined
21: {},
22: // index=0x01 no mode defined
23: {},
24: // index=0x02 no mode defined
25: {},
26: // index=0x03 no mode defined
27: {},
28: // index=0x04 vga mode 0x04
29: { 40, 24, 8, 0x0800, /* tw, th-1, ch, slength */
30: { 0x09, 0x03, 0x00, 0x02 }, /* sequ_regs */
31: 0x63, /* miscreg */
32: { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
33: 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
34: 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
35: 0xff }, /* crtc_regs */
36: { 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
37: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
38: 0x01, 0x00, 0x03, 0x00 }, /* actl_regs */
39: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff }, /* grdc_regs */
40: },
41: /* index=0x05 vga mode 0x05 */
42: { 40, 24, 8, 0x0800, /* tw, th-1, ch, slength */
43: { 0x09, 0x03, 0x00, 0x02 }, /* sequ_regs */
44: 0x63, /* miscreg */
45: { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
46: 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
47: 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xa2,
48: 0xff }, /* crtc_regs */
49: { 0x00, 0x13, 0x15, 0x17, 0x02, 0x04, 0x06, 0x07,
50: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
51: 0x01, 0x00, 0x03, 0x00 }, /* actl_regs */
52: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x0f, 0xff }, /* grdc_regs */
53: },
54: /* index=0x06 vga mode 0x06 */
55: { 80, 24, 8, 0x1000, /* tw, th-1, ch, slength */
56: { 0x01, 0x01, 0x00, 0x06 }, /* sequ_regs */
57: 0x63, /* miscreg */
58: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
59: 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
60: 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xc2,
61: 0xff }, /* crtc_regs */
62: { 0x00, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
63: 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
64: 0x01, 0x00, 0x01, 0x00 }, /* actl_regs */
65: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x0f, 0xff }, /* grdc_regs */
66: },
67: /* index=0x07 vga mode 0x07 */
68: { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */
69: { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */
70: 0x66, /* miscreg */
71: { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
72: 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
73: 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
74: 0xff }, /* crtc_regs */
75: { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
76: 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
77: 0x0e, 0x00, 0x0f, 0x08 }, /* actl_regs */
78: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff }, /* grdc_regs */
79: },
80: /* index=0x08 no mode defined */
81: {},
82: /* index=0x09 no mode defined */
83: {},
84: /* index=0x0a no mode defined */
85: {},
86: /* index=0x0b no mode defined */
87: {},
88: /* index=0x0c no mode defined */
89: {},
90: /* index=0x0d vga mode 0x0d */
91: { 40, 24, 8, 0x2000, /* tw, th-1, ch, slength */
92: { 0x09, 0x0f, 0x00, 0x06 }, /* sequ_regs */
93: 0x63, /* miscreg */
94: { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80, 0xbf, 0x1f,
95: 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
96: 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96, 0xb9, 0xe3,
97: 0xff }, /* crtc_regs */
98: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
99: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
100: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
101: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
102: },
103: /* index=0x0e vga mode 0x0e */
104: { 80, 24, 8, 0x4000, /* tw, th-1, ch, slength */
105: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
106: 0x63, /* miscreg */
107: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
108: 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
109: 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96, 0xb9, 0xe3,
110: 0xff }, /* crtc_regs */
111: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
112: 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
113: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
114: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
115: },
116: /* index=0x0f no mode defined */
117: {},
118: /* index=0x10 no mode defined */
119: {},
120: /* index=0x11 vga mode 0x0f */
121: { 80, 24, 14, 0x8000, /* tw, th-1, ch, slength */
122: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
123: 0xa3, /* miscreg */
124: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
125: 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
126: 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
127: 0xff }, /* crtc_regs */
128: { 0x00, 0x08, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00,
129: 0x00, 0x08, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00,
130: 0x01, 0x00, 0x01, 0x00 }, /* actl_regs */
131: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
132: },
133: /* index=0x12 vga mode 0x10 */
134: { 80, 24, 14, 0x8000, /* tw, th-1, ch, slength */
135: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
136: 0xa3, /* miscreg */
137: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
138: 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
139: 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63, 0xba, 0xe3,
140: 0xff }, /* crtc_regs */
141: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
142: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
143: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
144: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
145: },
146: /* index=0x13 no mode defined */
147: {},
148: /* index=0x14 no mode defined */
149: {},
150: /* index=0x15 no mode defined */
151: {},
152: /* index=0x16 no mode defined */
153: {},
154: /* index=0x17 vga mode 0x01 */
155: { 40, 24, 16, 0x0800, /* tw, th-1, ch, slength */
156: { 0x08, 0x03, 0x00, 0x02 }, /* sequ_regs */
157: 0x67, /* miscreg */
158: { 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0, 0xbf, 0x1f,
159: 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
160: 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96, 0xb9, 0xa3,
161: 0xff }, /* crtc_regs */
162: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
163: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
164: 0x0c, 0x00, 0x0f, 0x08 }, /* actl_regs */
165: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff }, /* grdc_regs */
166: },
167: /* index=0x18 vga mode 0x03 */
168: { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */
169: { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */
170: 0x67, /* miscreg */
171: { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
172: 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
173: 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96, 0xb9, 0xa3,
174: 0xff }, /* crtc_regs */
175: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
176: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
177: 0x0c, 0x00, 0x0f, 0x08 }, /* actl_regs */
178: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x0f, 0xff }, /* grdc_regs */
179: },
180: /* index=0x19 vga mode 0x07 */
181: { 80, 24, 16, 0x1000, /* tw, th-1, ch, slength */
182: { 0x00, 0x03, 0x00, 0x02 }, /* sequ_regs */
183: 0x66, /* miscreg */
184: { 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81, 0xbf, 0x1f,
185: 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00, 0x00, 0x00,
186: 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96, 0xb9, 0xa3,
187: 0xff }, /* crtc_regs */
188: { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
189: 0x10, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
190: 0x0e, 0x00, 0x0f, 0x08 }, /* actl_regs */
191: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x0f, 0xff }, /* grdc_regs */
192: },
193: /* index=0x1a vga mode 0x11 */
194: { 80, 29, 16, 0x0000, /* tw, th-1, ch, slength */
195: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
196: 0xe3, /* miscreg */
197: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
198: 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
199: 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
200: 0xff }, /* crtc_regs */
201: { 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
202: 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x3f,
203: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
204: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
205: },
206: /* index=0x1b vga mode 0x12 */
207: { 80, 29, 16, 0x0000, /* tw, th-1, ch, slength */
208: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
209: 0xe3, /* miscreg */
210: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0x0b, 0x3e,
211: 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
212: 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7, 0x04, 0xe3,
213: 0xff }, /* crtc_regs */
214: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
215: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
216: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
217: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
218: },
219: /* index=0x1c vga mode 0x13 */
220: { 40, 24, 8, 0x0000, /* tw, th-1, ch, slength */
221: { 0x01, 0x0f, 0x00, 0x0e }, /* sequ_regs */
222: 0x63, /* miscreg */
223: { 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80, 0xbf, 0x1f,
224: 0x00, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
225: 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96, 0xb9, 0xa3,
226: 0xff }, /* crtc_regs */
227: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
228: 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
229: 0x41, 0x00, 0x0f, 0x00 }, /* actl_regs */
230: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff }, /* grdc_regs */
231: },
232: /* index=0x1d vga mode 0x6a */
233: { 100, 36, 16, 0x0000, /* tw, th-1, ch, slength */
234: { 0x01, 0x0f, 0x00, 0x06 }, /* sequ_regs */
235: 0xe3, /* miscreg */
236: { 0x7f, 0x63, 0x63, 0x83, 0x6b, 0x1b, 0x72, 0xf0,
237: 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
238: 0x59, 0x8d, 0x57, 0x32, 0x00, 0x57, 0x73, 0xe3,
239: 0xff }, /* crtc_regs */
240: { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x14, 0x07,
241: 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
242: 0x01, 0x00, 0x0f, 0x00 }, /* actl_regs */
243: { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff }, /* grdc_regs */
244: },
245: };
246:
247:
248: /****************************************************************
249: * Palette definitions
250: ****************************************************************/
251:
252: /* Mono */
253: static u8 palette0[] VAR16 = {
254: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
255: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
256: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
257: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
258: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
259: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
260: 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f,
261: 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f,
262: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
263: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
264: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
265: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
266: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
267: 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,
268: 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f,
269: 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f, 0x3f,0x3f,0x3f
270: };
271:
272: static u8 palette1[] VAR16 = {
273: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
274: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
275: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
276: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
277: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
278: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
279: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
280: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
281: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
282: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
283: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
284: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
285: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
286: 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,
288: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f
289: };
290:
291: static u8 palette2[] VAR16 = {
292: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
293: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x2a,0x00, 0x2a,0x2a,0x2a,
294: 0x00,0x00,0x15, 0x00,0x00,0x3f, 0x00,0x2a,0x15, 0x00,0x2a,0x3f,
295: 0x2a,0x00,0x15, 0x2a,0x00,0x3f, 0x2a,0x2a,0x15, 0x2a,0x2a,0x3f,
296: 0x00,0x15,0x00, 0x00,0x15,0x2a, 0x00,0x3f,0x00, 0x00,0x3f,0x2a,
297: 0x2a,0x15,0x00, 0x2a,0x15,0x2a, 0x2a,0x3f,0x00, 0x2a,0x3f,0x2a,
298: 0x00,0x15,0x15, 0x00,0x15,0x3f, 0x00,0x3f,0x15, 0x00,0x3f,0x3f,
299: 0x2a,0x15,0x15, 0x2a,0x15,0x3f, 0x2a,0x3f,0x15, 0x2a,0x3f,0x3f,
300: 0x15,0x00,0x00, 0x15,0x00,0x2a, 0x15,0x2a,0x00, 0x15,0x2a,0x2a,
301: 0x3f,0x00,0x00, 0x3f,0x00,0x2a, 0x3f,0x2a,0x00, 0x3f,0x2a,0x2a,
302: 0x15,0x00,0x15, 0x15,0x00,0x3f, 0x15,0x2a,0x15, 0x15,0x2a,0x3f,
303: 0x3f,0x00,0x15, 0x3f,0x00,0x3f, 0x3f,0x2a,0x15, 0x3f,0x2a,0x3f,
304: 0x15,0x15,0x00, 0x15,0x15,0x2a, 0x15,0x3f,0x00, 0x15,0x3f,0x2a,
305: 0x3f,0x15,0x00, 0x3f,0x15,0x2a, 0x3f,0x3f,0x00, 0x3f,0x3f,0x2a,
306: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
307: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f
308: };
309:
310: static u8 palette3[] VAR16 = {
311: 0x00,0x00,0x00, 0x00,0x00,0x2a, 0x00,0x2a,0x00, 0x00,0x2a,0x2a,
312: 0x2a,0x00,0x00, 0x2a,0x00,0x2a, 0x2a,0x15,0x00, 0x2a,0x2a,0x2a,
313: 0x15,0x15,0x15, 0x15,0x15,0x3f, 0x15,0x3f,0x15, 0x15,0x3f,0x3f,
314: 0x3f,0x15,0x15, 0x3f,0x15,0x3f, 0x3f,0x3f,0x15, 0x3f,0x3f,0x3f,
315: 0x00,0x00,0x00, 0x05,0x05,0x05, 0x08,0x08,0x08, 0x0b,0x0b,0x0b,
316: 0x0e,0x0e,0x0e, 0x11,0x11,0x11, 0x14,0x14,0x14, 0x18,0x18,0x18,
317: 0x1c,0x1c,0x1c, 0x20,0x20,0x20, 0x24,0x24,0x24, 0x28,0x28,0x28,
318: 0x2d,0x2d,0x2d, 0x32,0x32,0x32, 0x38,0x38,0x38, 0x3f,0x3f,0x3f,
319: 0x00,0x00,0x3f, 0x10,0x00,0x3f, 0x1f,0x00,0x3f, 0x2f,0x00,0x3f,
320: 0x3f,0x00,0x3f, 0x3f,0x00,0x2f, 0x3f,0x00,0x1f, 0x3f,0x00,0x10,
321: 0x3f,0x00,0x00, 0x3f,0x10,0x00, 0x3f,0x1f,0x00, 0x3f,0x2f,0x00,
322: 0x3f,0x3f,0x00, 0x2f,0x3f,0x00, 0x1f,0x3f,0x00, 0x10,0x3f,0x00,
323: 0x00,0x3f,0x00, 0x00,0x3f,0x10, 0x00,0x3f,0x1f, 0x00,0x3f,0x2f,
324: 0x00,0x3f,0x3f, 0x00,0x2f,0x3f, 0x00,0x1f,0x3f, 0x00,0x10,0x3f,
325: 0x1f,0x1f,0x3f, 0x27,0x1f,0x3f, 0x2f,0x1f,0x3f, 0x37,0x1f,0x3f,
326: 0x3f,0x1f,0x3f, 0x3f,0x1f,0x37, 0x3f,0x1f,0x2f, 0x3f,0x1f,0x27,
327:
328: 0x3f,0x1f,0x1f, 0x3f,0x27,0x1f, 0x3f,0x2f,0x1f, 0x3f,0x37,0x1f,
329: 0x3f,0x3f,0x1f, 0x37,0x3f,0x1f, 0x2f,0x3f,0x1f, 0x27,0x3f,0x1f,
330: 0x1f,0x3f,0x1f, 0x1f,0x3f,0x27, 0x1f,0x3f,0x2f, 0x1f,0x3f,0x37,
331: 0x1f,0x3f,0x3f, 0x1f,0x37,0x3f, 0x1f,0x2f,0x3f, 0x1f,0x27,0x3f,
332: 0x2d,0x2d,0x3f, 0x31,0x2d,0x3f, 0x36,0x2d,0x3f, 0x3a,0x2d,0x3f,
333: 0x3f,0x2d,0x3f, 0x3f,0x2d,0x3a, 0x3f,0x2d,0x36, 0x3f,0x2d,0x31,
334: 0x3f,0x2d,0x2d, 0x3f,0x31,0x2d, 0x3f,0x36,0x2d, 0x3f,0x3a,0x2d,
335: 0x3f,0x3f,0x2d, 0x3a,0x3f,0x2d, 0x36,0x3f,0x2d, 0x31,0x3f,0x2d,
336: 0x2d,0x3f,0x2d, 0x2d,0x3f,0x31, 0x2d,0x3f,0x36, 0x2d,0x3f,0x3a,
337: 0x2d,0x3f,0x3f, 0x2d,0x3a,0x3f, 0x2d,0x36,0x3f, 0x2d,0x31,0x3f,
338: 0x00,0x00,0x1c, 0x07,0x00,0x1c, 0x0e,0x00,0x1c, 0x15,0x00,0x1c,
339: 0x1c,0x00,0x1c, 0x1c,0x00,0x15, 0x1c,0x00,0x0e, 0x1c,0x00,0x07,
340: 0x1c,0x00,0x00, 0x1c,0x07,0x00, 0x1c,0x0e,0x00, 0x1c,0x15,0x00,
341: 0x1c,0x1c,0x00, 0x15,0x1c,0x00, 0x0e,0x1c,0x00, 0x07,0x1c,0x00,
342: 0x00,0x1c,0x00, 0x00,0x1c,0x07, 0x00,0x1c,0x0e, 0x00,0x1c,0x15,
343: 0x00,0x1c,0x1c, 0x00,0x15,0x1c, 0x00,0x0e,0x1c, 0x00,0x07,0x1c,
344:
345: 0x0e,0x0e,0x1c, 0x11,0x0e,0x1c, 0x15,0x0e,0x1c, 0x18,0x0e,0x1c,
346: 0x1c,0x0e,0x1c, 0x1c,0x0e,0x18, 0x1c,0x0e,0x15, 0x1c,0x0e,0x11,
347: 0x1c,0x0e,0x0e, 0x1c,0x11,0x0e, 0x1c,0x15,0x0e, 0x1c,0x18,0x0e,
348: 0x1c,0x1c,0x0e, 0x18,0x1c,0x0e, 0x15,0x1c,0x0e, 0x11,0x1c,0x0e,
349: 0x0e,0x1c,0x0e, 0x0e,0x1c,0x11, 0x0e,0x1c,0x15, 0x0e,0x1c,0x18,
350: 0x0e,0x1c,0x1c, 0x0e,0x18,0x1c, 0x0e,0x15,0x1c, 0x0e,0x11,0x1c,
351: 0x14,0x14,0x1c, 0x16,0x14,0x1c, 0x18,0x14,0x1c, 0x1a,0x14,0x1c,
352: 0x1c,0x14,0x1c, 0x1c,0x14,0x1a, 0x1c,0x14,0x18, 0x1c,0x14,0x16,
353: 0x1c,0x14,0x14, 0x1c,0x16,0x14, 0x1c,0x18,0x14, 0x1c,0x1a,0x14,
354: 0x1c,0x1c,0x14, 0x1a,0x1c,0x14, 0x18,0x1c,0x14, 0x16,0x1c,0x14,
355: 0x14,0x1c,0x14, 0x14,0x1c,0x16, 0x14,0x1c,0x18, 0x14,0x1c,0x1a,
356: 0x14,0x1c,0x1c, 0x14,0x1a,0x1c, 0x14,0x18,0x1c, 0x14,0x16,0x1c,
357: 0x00,0x00,0x10, 0x04,0x00,0x10, 0x08,0x00,0x10, 0x0c,0x00,0x10,
358: 0x10,0x00,0x10, 0x10,0x00,0x0c, 0x10,0x00,0x08, 0x10,0x00,0x04,
359: 0x10,0x00,0x00, 0x10,0x04,0x00, 0x10,0x08,0x00, 0x10,0x0c,0x00,
360: 0x10,0x10,0x00, 0x0c,0x10,0x00, 0x08,0x10,0x00, 0x04,0x10,0x00,
361:
362: 0x00,0x10,0x00, 0x00,0x10,0x04, 0x00,0x10,0x08, 0x00,0x10,0x0c,
363: 0x00,0x10,0x10, 0x00,0x0c,0x10, 0x00,0x08,0x10, 0x00,0x04,0x10,
364: 0x08,0x08,0x10, 0x0a,0x08,0x10, 0x0c,0x08,0x10, 0x0e,0x08,0x10,
365: 0x10,0x08,0x10, 0x10,0x08,0x0e, 0x10,0x08,0x0c, 0x10,0x08,0x0a,
366: 0x10,0x08,0x08, 0x10,0x0a,0x08, 0x10,0x0c,0x08, 0x10,0x0e,0x08,
367: 0x10,0x10,0x08, 0x0e,0x10,0x08, 0x0c,0x10,0x08, 0x0a,0x10,0x08,
368: 0x08,0x10,0x08, 0x08,0x10,0x0a, 0x08,0x10,0x0c, 0x08,0x10,0x0e,
369: 0x08,0x10,0x10, 0x08,0x0e,0x10, 0x08,0x0c,0x10, 0x08,0x0a,0x10,
370: 0x0b,0x0b,0x10, 0x0c,0x0b,0x10, 0x0d,0x0b,0x10, 0x0f,0x0b,0x10,
371: 0x10,0x0b,0x10, 0x10,0x0b,0x0f, 0x10,0x0b,0x0d, 0x10,0x0b,0x0c,
372: 0x10,0x0b,0x0b, 0x10,0x0c,0x0b, 0x10,0x0d,0x0b, 0x10,0x0f,0x0b,
373: 0x10,0x10,0x0b, 0x0f,0x10,0x0b, 0x0d,0x10,0x0b, 0x0c,0x10,0x0b,
374: 0x0b,0x10,0x0b, 0x0b,0x10,0x0c, 0x0b,0x10,0x0d, 0x0b,0x10,0x0f,
375: 0x0b,0x10,0x10, 0x0b,0x0f,0x10, 0x0b,0x0d,0x10, 0x0b,0x0c,0x10,
376: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00,
377: 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00, 0x00,0x00,0x00
378: };
379:
380:
381: /****************************************************************
382: * Video mode list
383: ****************************************************************/
384:
385: #define PAL(x) x, sizeof(x)
386: #define VPARAM(x) &video_param_table[x]
387:
388: static struct vgamode_s vga_modes[] VAR16 = {
389: //mode vparam model bits sstart pelm dac
390: {0x00, VPARAM(0x17), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)},
391: {0x01, VPARAM(0x17), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)},
392: {0x02, VPARAM(0x18), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)},
393: {0x03, VPARAM(0x18), CTEXT, 4, SEG_CTEXT, 0xFF, PAL(palette2)},
394: {0x04, VPARAM(0x04), CGA, 2, SEG_CTEXT, 0xFF, PAL(palette1)},
395: {0x05, VPARAM(0x05), CGA, 2, SEG_CTEXT, 0xFF, PAL(palette1)},
396: {0x06, VPARAM(0x06), CGA, 1, SEG_CTEXT, 0xFF, PAL(palette1)},
397: {0x07, VPARAM(0x07), MTEXT, 4, SEG_MTEXT, 0xFF, PAL(palette0)},
398: {0x0D, VPARAM(0x0d), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette1)},
399: {0x0E, VPARAM(0x0e), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette1)},
400: {0x0F, VPARAM(0x11), PLANAR1, 1, SEG_GRAPH, 0xFF, PAL(palette0)},
401: {0x10, VPARAM(0x12), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)},
402: {0x11, VPARAM(0x1a), PLANAR1, 1, SEG_GRAPH, 0xFF, PAL(palette2)},
403: {0x12, VPARAM(0x1b), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)},
404: {0x13, VPARAM(0x1c), LINEAR8, 8, SEG_GRAPH, 0xFF, PAL(palette3)},
405: {0x6A, VPARAM(0x1d), PLANAR4, 4, SEG_GRAPH, 0xFF, PAL(palette2)},
406: };
407:
408: struct vgamode_s *
409: find_vga_entry(u8 mode)
410: {
411: int i;
412: for (i = 0; i < ARRAY_SIZE(vga_modes); i++) {
413: struct vgamode_s *vmode_g = &vga_modes[i];
414: if (GET_GLOBAL(vmode_g->svgamode) == mode)
415: return vmode_g;
416: }
417: return NULL;
418: }
419:
420: u16 video_save_pointer_table[14] VAR16;
421:
422:
423: /****************************************************************
424: * Static functionality table
425: ****************************************************************/
426:
427: u8 static_functionality[0x10] VAR16 = {
428: /* 0 */ 0xff, // All modes supported #1
429: /* 1 */ 0xe0, // All modes supported #2
430: /* 2 */ 0x0f, // All modes supported #3
431: /* 3 */ 0x00, 0x00, 0x00, 0x00, // reserved
432: /* 7 */ 0x07, // 200, 350, 400 scan lines
433: /* 8 */ 0x02, // mamimum number of visible charsets in text mode
434: /* 9 */ 0x08, // total number of charset blocks in text mode
435: /* a */ 0xe7, // Change to add new functions
436: /* b */ 0x0c, // Change to add new functions
437: /* c */ 0x00, // reserved
438: /* d */ 0x00, // reserved
439: /* e */ 0x00, // Change to add new functions
440: /* f */ 0x00 // reserved
441: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.