Initial import from FreeBSD RELENG_4:
[games.git] / usr.bin / doscmd / vparams.h
1 /*
2  * Copyright (c) 1992, 1993, 1996
3  *      Berkeley Software Design, Inc.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
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
16  *      Design, Inc.
17  *
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
28  * SUCH DAMAGE.
29  *
30  *      BSDI vparams.h,v 2.2 1996/04/08 19:33:13 bostic Exp
31  *
32  * $FreeBSD: src/usr.bin/doscmd/vparams.h,v 1.1.6.1 2002/04/25 11:04:51 tg Exp $
33  */
34
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
37    from 'video.h'. */
38
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
49         },
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,
59         },
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,
69         },
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,
79         },
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,
89         },
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,
99         },
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,
109         },
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,
119         },
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,
129         },
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,
139         },
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,
149         },
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,
159         },
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,
169         },
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,
179         },
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,
189         },
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,
199         },
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,
209         },
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,
219         },
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,
229         },
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,
239         },
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,
249         },
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,
259         },
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,
269         },
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,
279         },
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,
289         },
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,
299         },
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,
309         },
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,
319         },
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,
329         },
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,
338         },
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,
347         },
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,
356         },
357 };
358
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
361    list'. */
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}
379 };
380    
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[] = {
384         /* 16 CGA colors */
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},
389         /* grayscale */
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},
457         /* black */
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}
460 };
461
462 /* The Static Functionality Table, a collection of mode-independent status
463    info. */
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 */
469         4,                      /* 400 lines */
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
477                                        5: EGA palette
478                                        6: VGA color registers
479                                        7: color pages */
480         0x8,                    /* Bit 0: lightpen interface
481                                        1: save/load video status
482                                        2: toggle intensity/blink
483                                        3: DCC
484                                        4-7: reserved */
485         0,                      /* reserved */
486         0,                      /* Save Pointer functions available
487                                    Bit 0: 2 charsets
488                                        1: Palette Save Area
489                                        2: user-defined charset (text)
490                                        3: user-defined charset (graphics)
491                                        4: user-defined palette
492                                        5: DCC
493                                        6, 7: reserved */
494         0                       /* reserved */
495 };