2 * Copyright (c) 1992, 1993, 1996
3 * Berkeley Software Design, Inc. All rights reserved.
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by Berkeley Software
18 * THIS SOFTWARE IS PROVIDED BY Berkeley Software Design, Inc. ``AS IS'' AND
19 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21 * ARE DISCLAIMED. IN NO EVENT SHALL Berkeley Software Design, Inc. BE LIABLE
22 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
26 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
27 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
30 * BSDI vparams.h,v 2.2 1996/04/08 19:33:13 bostic Exp
32 * $FreeBSD: src/usr.bin/doscmd/vparams.h,v 1.1.6.1 2002/04/25 11:04:51 tg Exp $
35 /* Collect some default parameters for the VGA emulator in this file. This is
36 supposed to be included only from 'video.c' and needs some type definitions
39 u_int8_t videoparams[][64] = {
40 /* Mode 0: Text, 40x25, CGA (200 lines) */
41 { 0x28, 0x18, 0x08, 0x00, 0x08, 0x09, 0x03, 0x00,
42 0x02, 0x63, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0,
43 0xbf, 0x1f, 0x00, 0xc7, 0x06, 0x07, 0x00, 0x00,
44 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96,
45 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
46 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
47 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
48 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff
50 /* Mode 1: Text, 40x25, CGA (200 lines) */
51 { 0x28, 0x18, 0x08, 0x00, 0x08, 0x09, 0x03, 0x00,
52 0x02, 0x63, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0,
53 0xbf, 0x1f, 0x00, 0xc7, 0x06, 0x07, 0x00, 0x00,
54 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96,
55 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
56 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
57 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
58 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
60 /* Mode 2: Text, 80x25, CGA (200 lines) */
61 { 0x50, 0x18, 0x08, 0x00, 0x10, 0x01, 0x03, 0x00,
62 0x02, 0x63, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
63 0xbf, 0x1f, 0x00, 0xc7, 0x06, 0x07, 0x00, 0x00,
64 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96,
65 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
66 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
67 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
68 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
70 /* Mode 3: Text, 80x25, CGA (200 lines) */
71 { 0x50, 0x18, 0x08, 0x00, 0x10, 0x01, 0x03, 0x00,
72 0x02, 0x63, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
73 0xbf, 0x1f, 0x00, 0xc7, 0x06, 0x07, 0x00, 0x00,
74 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96,
75 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
76 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
77 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
78 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
80 /* Mode 4: Graphics, 320x200, 4 colors */
81 { 0x28, 0x18, 0x08, 0x00, 0x40, 0x09, 0x03, 0x00,
82 0x02, 0x63, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80,
83 0xbf, 0x1f, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00,
84 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96,
85 0xb9, 0xa2, 0xff, 0x00, 0x13, 0x15, 0x17, 0x02,
86 0x04, 0x06, 0x07, 0x10, 0x11, 0x12, 0x13, 0x14,
87 0x15, 0x16, 0x17, 0x01, 0x00, 0x03, 0x00, 0x00,
88 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x00, 0xff,
90 /* Mode 5: Graphics, 320x200, 4 colors */
91 { 0x28, 0x18, 0x08, 0x00, 0x40, 0x09, 0x03, 0x00,
92 0x02, 0x63, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80,
93 0xbf, 0x1f, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00,
94 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96,
95 0xb9, 0xa2, 0xff, 0x00, 0x13, 0x15, 0x17, 0x02,
96 0x04, 0x06, 0x07, 0x10, 0x11, 0x12, 0x13, 0x14,
97 0x15, 0x16, 0x17, 0x01, 0x00, 0x03, 0x00, 0x00,
98 0x00, 0x00, 0x00, 0x00, 0x30, 0x0f, 0x00, 0xff,
100 /* Mode 6: Graphics, 640x200, 2 colors */
101 { 0x50, 0x18, 0x08, 0x00, 0x40, 0x01, 0x01, 0x00,
102 0x06, 0x63, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
103 0xbf, 0x1f, 0x00, 0xc1, 0x00, 0x00, 0x00, 0x00,
104 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96,
105 0xb9, 0xc2, 0xff, 0x00, 0x17, 0x17, 0x17, 0x17,
106 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
107 0x17, 0x17, 0x17, 0x01, 0x00, 0x01, 0x00, 0x00,
108 0x00, 0x00, 0x00, 0x00, 0x00, 0x0d, 0x00, 0xff,
110 /* Mode 7: Text, 80x25, mono, MDA (350 lines) */
111 { 0x50, 0x18, 0x0e, 0x00, 0x10, 0x00, 0x03, 0x00,
112 0x03, 0xa6, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
113 0xbf, 0x1f, 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00,
114 0x00, 0x00, 0x83, 0x85, 0x5d, 0x28, 0x0d, 0x63,
115 0xba, 0xa3, 0xff, 0x00, 0x08, 0x08, 0x08, 0x08,
116 0x08, 0x08, 0x08, 0x10, 0x18, 0x18, 0x18, 0x18,
117 0x18, 0x18, 0x18, 0x0e, 0x00, 0x0f, 0x08, 0x00,
118 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00, 0xff,
120 /* Mode 8: reserved */
121 { 0x50, 0x18, 0x10, 0x00, 0x10, 0x01, 0x03, 0x00,
122 0x02, 0x62, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
123 0xbf, 0x1f, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
124 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96,
125 0xb9, 0xa3, 0xff, 0x00, 0x08, 0x08, 0x08, 0x08,
126 0x08, 0x08, 0x08, 0x10, 0x18, 0x18, 0x18, 0x18,
127 0x18, 0x18, 0x18, 0x0a, 0x00, 0x0f, 0x00, 0x00,
128 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00, 0xff,
130 /* Mode 9: reserved */
131 { 0x28, 0x18, 0x10, 0x00, 0x08, 0x09, 0x03, 0x00,
132 0x02, 0x63, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0,
133 0xbf, 0x1f, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
134 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96,
135 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
136 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
137 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
138 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
140 /* Mode a: reserved */
141 { 0x50, 0x18, 0x10, 0x00, 0x10, 0x01, 0x03, 0x00,
142 0x02, 0x63, 0x60, 0x4f, 0x50, 0x82, 0x56, 0x82,
143 0xbf, 0x1f, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
144 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96,
145 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
146 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
147 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
148 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
150 /* Mode b: reserved */
151 { 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0f, 0x00,
152 0x06, 0x62, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
153 0xbf, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
154 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96,
155 0xb9, 0xe3, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
156 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
157 0x00, 0x00, 0x3f, 0x01, 0x00, 0x0f, 0x00, 0x00,
158 0x00, 0x0f, 0x00, 0x00, 0x08, 0x05, 0x0f, 0xff,
160 /* Mode c: reserved */
161 { 0x50, 0x00, 0x00, 0x00, 0x00, 0x29, 0x0f, 0x00,
162 0x06, 0x63, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
163 0xbf, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
164 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96,
165 0xb9, 0xe3, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00,
166 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
167 0x00, 0x00, 0x3f, 0x01, 0x00, 0x0f, 0x00, 0x00,
168 0x00, 0x0f, 0x00, 0x00, 0x08, 0x05, 0x0f, 0xff,
170 /* Mode d: Graphics, 320x200, 16 colors */
171 { 0x28, 0x18, 0x08, 0x00, 0x20, 0x09, 0x0f, 0x00,
172 0x06, 0x63, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0x80,
173 0xbf, 0x1f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
174 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x14, 0x00, 0x96,
175 0xb9, 0xe3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
176 0x05, 0x06, 0x07, 0x10, 0x11, 0x12, 0x13, 0x14,
177 0x15, 0x16, 0x17, 0x01, 0x00, 0x0f, 0x00, 0x00,
178 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff,
180 /* Mode e: Graphics, 640x200, 16 colors */
181 { 0x50, 0x18, 0x08, 0x00, 0x40, 0x01, 0x0f, 0x00,
182 0x06, 0x63, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
183 0xbf, 0x1f, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00,
184 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x00, 0x96,
185 0xb9, 0xe3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
186 0x05, 0x06, 0x07, 0x10, 0x11, 0x12, 0x13, 0x14,
187 0x15, 0x16, 0x17, 0x01, 0x00, 0x0f, 0x00, 0x00,
188 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff,
190 /* Mode f: Graphics, 640x350, mono (EGA with 64K) */
191 { 0x50, 0x18, 0x0e, 0x00, 0x80, 0x01, 0x0f, 0x00,
192 0x06, 0xa2, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
193 0xbf, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
194 0x00, 0x00, 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63,
195 0xba, 0xe3, 0xff, 0x00, 0x08, 0x00, 0x00, 0x18,
196 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
197 0x18, 0x00, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x00,
198 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0xff,
200 /* Mode 10: Graphics, 640x350, 4 colors (EGA with 64K) */
201 { 0x50, 0x18, 0x0e, 0x00, 0x80, 0x01, 0x0f, 0x00,
202 0x06, 0xa3, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
203 0xbf, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
204 0x00, 0x00, 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63,
205 0xba, 0xe3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
206 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
207 0x3d, 0x3e, 0x3f, 0x01, 0x00, 0x0f, 0x00, 0x00,
208 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff,
210 /* Mode f: Graphics, 640x350, mono (EGA with >64K) */
211 { 0x50, 0x18, 0x0e, 0x00, 0x80, 0x01, 0x0f, 0x00,
212 0x06, 0xa2, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
213 0xbf, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
214 0x00, 0x00, 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63,
215 0xba, 0xe3, 0xff, 0x00, 0x08, 0x00, 0x00, 0x18,
216 0x18, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
217 0x18, 0x00, 0x00, 0x0b, 0x00, 0x05, 0x00, 0x00,
218 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x05, 0xff,
220 /* Mode 10: Graphics, 640x350, 16 colors (EGA with >64K) */
221 { 0x50, 0x18, 0x0e, 0x00, 0x80, 0x01, 0x0f, 0x00,
222 0x06, 0xa3, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
223 0xbf, 0x1f, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
224 0x00, 0x00, 0x83, 0x85, 0x5d, 0x28, 0x0f, 0x63,
225 0xba, 0xe3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
226 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
227 0x3d, 0x3e, 0x3f, 0x01, 0x00, 0x0f, 0x00, 0x00,
228 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff,
230 /* Mode 0: Text, 40x25, EGA (350 lines) */
231 { 0x28, 0x18, 0x0e, 0x00, 0x08, 0x09, 0x03, 0x00,
232 0x02, 0xa3, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0,
233 0xbf, 0x1f, 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00,
234 0x00, 0x00, 0x83, 0x85, 0x5d, 0x14, 0x1f, 0x63,
235 0xba, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
236 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
237 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
238 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
240 /* Mode 1: Text, 40x25, EGA (350 lines) */
241 { 0x28, 0x18, 0x0e, 0x00, 0x08, 0x09, 0x03, 0x00,
242 0x02, 0xa3, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0,
243 0xbf, 0x1f, 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00,
244 0x00, 0x00, 0x83, 0x85, 0x5d, 0x14, 0x1f, 0x63,
245 0xba, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
246 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
247 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
248 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
250 /* Mode 2: Text, 80x25, EGA (350 lines) */
251 { 0x50, 0x18, 0x0e, 0x00, 0x10, 0x01, 0x03, 0x00,
252 0x02, 0xa3, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
253 0xbf, 0x1f, 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00,
254 0x00, 0x00, 0x83, 0x85, 0x5d, 0x28, 0x1f, 0x63,
255 0xba, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
256 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
257 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
258 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
260 /* Mode 3: Text, 80x25, EGA (350 lines) */
261 { 0x50, 0x18, 0x0e, 0x00, 0x10, 0x01, 0x03, 0x00,
262 0x02, 0xa3, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
263 0xbf, 0x1f, 0x00, 0x4d, 0x0b, 0x0c, 0x00, 0x00,
264 0x00, 0x00, 0x83, 0x85, 0x5d, 0x28, 0x1f, 0x63,
265 0xba, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
266 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
267 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
268 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
270 /* Modes 0, 1: Text, 40x25, VGA (400 lines) */
271 { 0x28, 0x18, 0x10, 0x00, 0x08, 0x08, 0x03, 0x00,
272 0x02, 0x67, 0x2d, 0x27, 0x28, 0x90, 0x2b, 0xa0,
273 0xbf, 0x1f, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
274 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x14, 0x1f, 0x96,
275 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
276 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
277 0x3d, 0x3e, 0x3f, 0x0c, 0x00, 0x0f, 0x08, 0x00,
278 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
280 /* Modes 2, 3: Text, 80x25, VGA (400 lines) */
281 { 0x50, 0x18, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00,
282 0x02, 0x67, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
283 0xbf, 0x1f, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
284 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x1f, 0x96,
285 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
286 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
287 0x3d, 0x3e, 0x3f, 0x0c, 0x00, 0x0f, 0x08, 0x00,
288 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
290 /* Mode 7: Text, 80x25, mono, VGA (400 lines) */
291 { 0x50, 0x18, 0x10, 0x00, 0x10, 0x00, 0x03, 0x00,
292 0x02, 0x66, 0x5f, 0x4f, 0x50, 0x82, 0x55, 0x81,
293 0xbf, 0x1f, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
294 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x0f, 0x96,
295 0xb9, 0xa3, 0xff, 0x00, 0x08, 0x08, 0x08, 0x08,
296 0x08, 0x08, 0x08, 0x10, 0x18, 0x18, 0x18, 0x18,
297 0x18, 0x18, 0x18, 0x0e, 0x00, 0x0f, 0x08, 0x00,
298 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00, 0xff,
300 /* Mode 11: Graphics, 640x480, 2 colors */
301 { 0x50, 0x1d, 0x10, 0x00, 0xa0, 0x01, 0x0f, 0x00,
302 0x06, 0xe3, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
303 0x0b, 0x3e, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
304 0x00, 0x00, 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7,
305 0x04, 0xc3, 0xff, 0x00, 0x3f, 0x3f, 0x3f, 0x3f,
306 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f,
307 0x3f, 0x3f, 0x3f, 0x01, 0x00, 0x0f, 0x00, 0x00,
308 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x01, 0xff,
310 /* Mode 12: Graphics, 640x480, 16 colors */
311 { 0x50, 0x1d, 0x10, 0x00, 0xa0, 0x01, 0x0f, 0x00,
312 0x06, 0xe3, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
313 0x0b, 0x3e, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00,
314 0x00, 0x00, 0xea, 0x8c, 0xdf, 0x28, 0x00, 0xe7,
315 0x04, 0xe3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
316 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
317 0x3d, 0x3e, 0x3f, 0x01, 0x00, 0x0f, 0x00, 0x00,
318 0x80, 0x00, 0x00, 0x00, 0x00, 0x05, 0x0f, 0xff,
320 /* Mode 13: Graphics, 320x200, 256 colors */
321 { 0x28, 0x18, 0x08, 0x00, 0x20, 0x01, 0x0f, 0x00,
322 0x0e, 0x63, 0x5f, 0x4f, 0x50, 0x82, 0x54, 0x80,
323 0xbf, 0x1f, 0x00, 0x41, 0x00, 0x00, 0x00, 0x00,
324 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x28, 0x40, 0x96,
325 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
326 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c,
327 0x0d, 0x0e, 0x0f, 0x41, 0x00, 0x0f, 0x00, 0x00,
328 0x00, 0x00, 0x00, 0x00, 0x40, 0x05, 0x0f, 0xff,
330 { 0x50, 0x1d, 0x10, 0x00, 0x20, 0x01, 0x03, 0x00,
331 0x02, 0xe3, 0x5f, 0x4f, 0x50, 0x82, 0x57, 0x82,
332 0x08, 0x3e, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
333 0x00, 0x00, 0xea, 0x8f, 0xdf, 0x28, 0x00, 0xe7,
334 0x04, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
335 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
336 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
337 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
339 { 0x84, 0x18, 0x10, 0x00, 0x20, 0x01, 0x03, 0x00,
340 0x42, 0x62, 0x9b, 0x83, 0x86, 0x9e, 0x8a, 0x1b,
341 0xbf, 0x1f, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
342 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x42, 0x0f, 0x96,
343 0xb9, 0xa3, 0xff, 0x00, 0x08, 0x08, 0x08, 0x08,
344 0x08, 0x08, 0x08, 0x10, 0x18, 0x18, 0x18, 0x18,
345 0x18, 0x18, 0x18, 0x0a, 0x00, 0x0f, 0x00, 0x00,
346 0x00, 0x00, 0x00, 0x00, 0x10, 0x0a, 0x00, 0xff,
348 { 0x84, 0x18, 0x10, 0x00, 0x20, 0x01, 0x03, 0x00,
349 0x42, 0x63, 0x9b, 0x83, 0x86, 0x9e, 0x8a, 0x1b,
350 0xbf, 0x1f, 0x00, 0x4f, 0x0d, 0x0e, 0x00, 0x00,
351 0x00, 0x00, 0x9c, 0x8e, 0x8f, 0x42, 0x0f, 0x96,
352 0xb9, 0xa3, 0xff, 0x00, 0x01, 0x02, 0x03, 0x04,
353 0x05, 0x14, 0x07, 0x38, 0x39, 0x3a, 0x3b, 0x3c,
354 0x3d, 0x3e, 0x3f, 0x08, 0x00, 0x0f, 0x00, 0x00,
355 0x00, 0x00, 0x00, 0x00, 0x10, 0x0e, 0x00, 0xff,
359 /* The default DAC table for the EGA and VGA 16 color modes. This table is
360 installed on startup. The values are taken from the output of 'scon -p
362 struct dac_colors dac_default64[] = {
363 {0, 0, 0}, {0, 0, 42}, {0, 42, 0}, {0, 42, 42},
364 {42, 0, 0}, {42, 0, 42}, {42, 42, 0}, {42, 42, 42},
365 {0, 0, 21}, {0, 0, 63}, {0, 42, 21}, {0, 42, 63},
366 {42, 0, 21}, {42, 0, 63}, {42, 42, 21}, {42, 42, 63},
367 {0, 21, 0}, {0, 21, 42}, {0, 63, 0}, {0, 63, 42},
368 {42, 21, 0}, {42, 21, 42}, {42, 63, 0}, {42, 63, 42},
369 {0, 21, 21}, {0, 21, 63}, {0, 63, 21}, {0, 63, 63},
370 {42, 21, 21}, {42, 21, 63}, {42, 63, 21}, {42, 63, 63},
371 {21, 0, 0}, {21, 0, 42}, {21, 42, 0}, {21, 42, 42},
372 {63, 0, 0}, {63, 0, 42}, {63, 42, 0}, {63, 42, 42},
373 {21, 0, 21}, {21, 0, 63}, {21, 42, 21}, {21, 42, 63},
374 {63, 0, 21}, {63, 0, 63}, {63, 42, 21}, {63, 42, 63},
375 {21, 21, 0}, {21, 21, 42}, {21, 63, 0}, {21, 63, 42},
376 {63, 21, 0}, {63, 21, 42}, {63, 63, 0}, {63, 63, 42},
377 {21, 21, 21}, {21, 21, 63}, {21, 63, 21}, {21, 63, 63},
378 {63, 21, 21}, {63, 21, 63}, {63, 63, 21}, {63, 63, 63}
381 /* The default DAC table for the 256 color mode. The values are taken from the
382 output of 'vdacc.exe', from Michael Tischler's book ``PC intern 4''. */
383 struct dac_colors dac_default256[] = {
385 {0, 0, 0}, {0, 0, 42}, {0, 42, 0}, {0, 42, 42},
386 {42, 0, 0}, {42, 0, 42}, {42, 21, 0}, {42, 42, 42},
387 {21, 21, 21}, {21, 21, 63}, {21, 63, 21}, {21, 63, 63},
388 {63, 21, 21}, {63, 21, 63}, {63, 63, 21}, {63, 63, 63},
390 {0, 0, 0}, {5, 5, 5}, {8, 8, 8}, {11, 11, 11},
391 {14, 14, 14}, {17, 17, 17}, {20, 20, 20}, {24, 24, 24},
392 {28, 28, 28}, {32, 32, 32}, {36, 36, 36}, {40, 40, 40},
393 {45, 45, 45}, {50, 50, 50}, {56, 56, 56}, {63, 63, 63},
394 /* high intensity, high saturation */
395 {0, 0, 63}, {16, 0, 63}, {31, 0, 63}, {47, 0, 63},
396 {63, 0, 63}, {63, 0, 47}, {63, 0, 31}, {63, 0, 16},
397 {63, 63, 0}, {63, 16, 0}, {63, 31, 0}, {63, 47, 0},
398 {63, 63, 0}, {47, 63, 0}, {31, 63, 0}, {16, 63, 0},
399 {0, 63, 0}, {0, 63, 16}, {0, 63, 31}, {0, 63, 47},
400 {0, 63, 63}, {0, 47, 63}, {0, 31, 63}, {0, 16, 63},
401 /* high intensity, medium saturation */
402 {31, 31, 63}, {39, 31, 63}, {47, 31, 63}, {55, 31, 63},
403 {63, 31, 63}, {63, 31, 55}, {63, 31, 47}, {63, 31, 39},
404 {63, 31, 31}, {63, 39, 31}, {63, 47, 31}, {63, 55, 31},
405 {63, 63, 31}, {55, 63, 31}, {47, 63, 31}, {39, 63, 31},
406 {31, 63, 31}, {31, 63, 39}, {31, 63, 47}, {31, 63, 55},
407 {31, 63, 63}, {31, 55, 63}, {31, 47, 63}, {31, 39, 63},
408 /* high intensity, low saturation */
409 {45, 45, 63}, {49, 45, 63}, {54, 45, 63}, {58, 45, 63},
410 {63, 45, 63}, {63, 45, 58}, {63, 45, 54}, {63, 45, 49},
411 {63, 45, 45}, {63, 49, 45}, {63, 54, 45}, {63, 58, 45},
412 {63, 63, 45}, {58, 63, 45}, {54, 63, 45}, {49, 63, 45},
413 {45, 63, 45}, {45, 63, 49}, {45, 63, 54}, {45, 63, 58},
414 {45, 63, 63}, {45, 58, 63}, {45, 54, 63}, {45, 49, 63},
415 /* medium intensity, high saturation */
416 {0, 0, 28}, {7, 0, 28}, {14, 0, 28}, {21, 0, 28},
417 {28, 0, 28}, {28, 0, 21}, {28, 0, 14}, {28, 0, 7},
418 {28, 0, 0}, {28, 7, 0}, {28, 14, 0}, {28, 21, 0},
419 {28, 28, 0}, {21, 28, 0}, {14, 28, 0}, {7, 28, 0},
420 {0, 28, 0}, {0, 28, 7}, {0, 28, 14}, {0, 28, 21},
421 {0, 28, 28}, {0, 21, 28}, {0, 14, 28}, {0, 7, 28},
422 /* medium intensity, medium saturation */
423 {14, 14, 28}, {17, 14, 28}, {21, 14, 28}, {24, 14, 28},
424 {28, 14, 28}, {28, 14, 24}, {28, 14, 21}, {28, 14, 17},
425 {28, 14, 14}, {28, 17, 14}, {28, 21, 14}, {28, 24, 14},
426 {28, 28, 14}, {24, 28, 14}, {21, 28, 14}, {17, 28, 14},
427 {14, 28, 14}, {14, 28, 17}, {14, 28, 21}, {14, 28, 24},
428 {14, 28, 28}, {14, 24, 28}, {14, 21, 28}, {14, 17, 28},
429 /* medium intensity, low saturation */
430 {20, 20, 28}, {22, 20, 28}, {24, 20, 28}, {26, 20, 28},
431 {28, 20, 28}, {28, 20, 26}, {28, 20, 24}, {28, 20, 22},
432 {28, 20, 20}, {28, 22, 20}, {28, 24, 20}, {28, 26, 20},
433 {28, 28, 20}, {26, 28, 20}, {24, 28, 20}, {22, 28, 20},
434 {20, 28, 20}, {20, 28, 22}, {20, 28, 24}, {20, 28, 26},
435 {20, 28, 28}, {20, 26, 28}, {20, 24, 28}, {20, 22, 28},
436 /* low intensity, high saturation */
437 {0, 0, 16}, {4, 0, 16}, {8, 0, 16}, {12, 0, 16},
438 {16, 0, 16}, {16, 0, 12}, {16, 0, 8}, {16, 0, 4},
439 {16, 0, 0}, {16, 4, 0}, {16, 8, 0}, {16, 12, 0},
440 {16, 16, 0}, {12, 16, 0}, {8, 16, 0}, {4, 16, 0},
441 {0, 16, 0}, {0, 16, 4}, {0, 16, 8}, {0, 16, 12},
442 {0, 16, 16}, {0, 12, 16}, {0, 8, 16}, {0, 4, 16},
443 /* low intensity, medium saturation */
444 {8, 8, 16}, {10, 8, 16}, {12, 8, 16}, {14, 8, 16},
445 {16, 8, 16}, {16, 8, 14}, {16, 8, 12}, {16, 8, 10},
446 {16, 8, 8}, {16, 10, 8}, {16, 12, 8}, {16, 14, 8},
447 {16, 16, 8}, {14, 16, 8}, {12, 16, 8}, {10, 16, 8},
448 {8, 16, 8}, {8, 16, 10}, {8, 16, 12}, {8, 16, 14},
449 {8, 16, 16}, {8, 14, 16}, {8, 12, 16}, {8, 10, 16},
450 /* low intensity, low saturation */
451 {11, 11, 16}, {12, 11, 16}, {13, 11, 16}, {15, 11, 16},
452 {16, 11, 16}, {16, 11, 15}, {16, 11, 13}, {16, 11, 12},
453 {16, 11, 11}, {16, 12, 11}, {16, 13, 11}, {16, 15, 11},
454 {16, 16, 11}, {15, 16, 11}, {13, 16, 11}, {12, 16, 11},
455 {11, 16, 11}, {11, 16, 12}, {11, 16, 13}, {11, 16, 15},
456 {11, 16, 16}, {11, 15, 16}, {11, 13, 16}, {11, 12, 16},
458 {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0},
459 {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}
462 /* The Static Functionality Table, a collection of mode-independent status
464 u_int8_t static_functionality_table[] = {
465 0x0c, /* Video modes 0 - 7 */
466 0, /* Video modes 8 - 15 */
467 0, /* Video modes 16 - 23 */
468 0, 0, 0, 0, /* reserved */
470 1, /* Charset memory blocks available */
471 1, /* Charset memory blocks in use */
472 0x79, /* Bit 0: all modes on all displays
473 1: grayscale equivalents
474 2: user-definable charsets
475 3: user-definable palette
476 4: CGA cursor emulation
478 6: VGA color registers
480 0x8, /* Bit 0: lightpen interface
481 1: save/load video status
482 2: toggle intensity/blink
486 0, /* Save Pointer functions available
489 2: user-defined charset (text)
490 3: user-defined charset (graphics)
491 4: user-defined palette