Chameleon Applications

Chameleon Applications Svn Source Tree

Root/branches/iFabio/i386/libsaio/vbe.h

Source at commit 214 created 13 years 5 months ago.
By ifabio, update to chameleon trunk 630, and now the pakage folder is the same as blackosx branch, also add Icon "building" into buildpkg script, and add mint theme info into the English localizable.strings.
1/*
2 * Copyright (c) 1999-2003 Apple Computer, Inc. All rights reserved.
3 *
4 * @APPLE_LICENSE_HEADER_START@
5 *
6 * Portions Copyright (c) 1999-2003 Apple Computer, Inc. All Rights
7 * Reserved. This file contains Original Code and/or Modifications of
8 * Original Code as defined in and that are subject to the Apple Public
9 * Source License Version 2.0 (the "License"). You may not use this file
10 * except in compliance with the License. Please obtain a copy of the
11 * License at http://www.apple.com/publicsource and read it before using
12 * this file.
13 *
14 * The Original Code and all software distributed under the License are
15 * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
16 * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
17 * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the
19 * License for the specific language governing rights and limitations
20 * under the License.
21 *
22 * @APPLE_LICENSE_HEADER_END@
23 */
24// Copyright 1997 by Apple Computer, Inc., all rights reserved.
25/* Copyright 1996-1997 NeXT Software, Inc.
26 *
27 * vesa.h - mode info obtained via int10
28 *
29 * Revision History
30 * ----------------
31 * 30 Jul 1996 Doug Mitchell at NeXT
32 * Created.
33 */
34
35#ifndef __LIBSAIO_VBE_H
36#define __LIBSAIO_VBE_H
37
38#define MIN_VESA_VERSION 0x200
39
40#define SEG(address) \
41 ((unsigned short)(((unsigned long)address & 0xffff0000) >> 4))
42
43#define OFF(address) \
44 ((unsigned short)((unsigned long)address & 0x0000ffff))
45
46#define VBEMakeUInt32(x) \
47 (((unsigned long)x##_high << 24) | \
48 ((unsigned long)x##_2 << 16) | \
49 ((unsigned long)x##_1 << 8) | \
50 (unsigned long)x##_low)
51
52#define VBEDecodeFP(t, fp) \
53 ((t)(((fp ## _low) | ((fp ## _1 ) << 8)) + \
54 (((fp ## _2) << 4) | ((fp ## _high ) << 12))))
55
56/*
57 * Functions
58 */
59enum {
60 funcGetControllerInfo = 0x4F00,
61 funcGetModeInfo = 0x4F01,
62 funcSetMode = 0x4F02,
63 funcGetCurrentMode = 0x4F03,
64 funcSaveRestoreState = 0x4F04,
65 funcWindowControl = 0x4F05,
66 funcGetSetScanLineLength = 0x4F06,
67 funcGetSetDisplayStart = 0x4F07,
68 funcGetSetPaletteFormat = 0x4F08,
69 funcGetSetPaletteData = 0x4F09,
70 funcGetProtModeInterdace = 0x4F0A,
71 funcGetSetPixelClock = 0x4F0B
72};
73
74enum {
75 subfuncSet = 0x00,
76 subfuncGet = 0x01,
77 subfuncSetSecondary = 0x02,
78 subfuncGetSecondary = 0x03
79};
80
81/*
82 * errors.
83 */
84enum {
85 errSuccess = 0,
86 errFuncFailed = 1,
87 errFuncNotSupported = 2,
88 errFuncInvalid = 3
89};
90
91/*
92 * Per-controller info, returned in function 4f00.
93 */
94typedef struct {
95 unsigned char VESASignature[4];
96 unsigned short VESAVersion;
97 /*
98 * Avoid packing problem...
99 */
100 unsigned char OEMStringPtr_low;
101 unsigned char OEMStringPtr_1;
102 unsigned char OEMStringPtr_2;
103 unsigned char OEMStringPtr_high;
104 unsigned char Capabilities_low;
105 unsigned char Capabilities_1;
106 unsigned char Capabilities_2;
107 unsigned char Capabilities_high;
108 unsigned char VideoModePtr_low;
109 unsigned char VideoModePtr_1;
110 unsigned char VideoModePtr_2;
111 unsigned char VideoModePtr_high;
112 unsigned short TotalMemory;
113 unsigned char Reserved[236];
114 unsigned char OEMData[256];
115} VBEInfoBlock;
116
117/*
118 * Capabilites
119 */
120enum {
121 capDACWidthIsSwitchableBit = (1 << 0), /* 1 = yes; 0 = no */
122 capControllerIsNotVGACompatableBit = (1 << 1), /* 1 = no; 0 = yes */
123 capOldRAMDAC = (1 << 2) /* 1 = yes; 0 = no */
124};
125
126/*
127 * Per-mode info, returned in function 4f02.
128 */
129typedef struct {
130 unsigned short ModeAttributes;
131 unsigned char WinAAttributes;
132 unsigned char WinBAttributes;
133 unsigned short WinGranularity;
134 unsigned short WinSize;
135 unsigned short WinASegment;
136 unsigned short WinABegment;
137 void * WinFuncPtr;
138 unsigned short BytesPerScanline;
139 unsigned short XResolution;
140 unsigned short YResolution;
141 unsigned char XCharSize;
142 unsigned char YCharSize;
143 unsigned char NumberOfPlanes;
144 unsigned char BitsPerPixel;
145 unsigned char NumberOfBanks;
146 unsigned char MemoryModel;
147 unsigned char BankSize;
148 unsigned char NumberOfImagePages;
149 unsigned char Reserved;
150 unsigned char RedMaskSize;
151 unsigned char RedFieldPosition;
152 unsigned char GreenMaskSize;
153 unsigned char GreenFieldPosition;
154 unsigned char BlueMaskSize;
155 unsigned char BlueFieldPosition;
156 unsigned char RsvdMaskSize;
157 unsigned char RsvdFieldPosition;
158 unsigned char DirectColorModeInfo;
159 unsigned char PhysBasePtr_low;
160 unsigned char PhysBasePtr_1;
161 unsigned char PhysBasePtr_2;
162 unsigned char PhysBasePtr_high;
163 void * OffScreenMemOffset;
164 unsigned short OffScreenMemSize;
165 unsigned char Reserved1[206];
166} VBEModeInfoBlock;
167
168/*
169 * ModeAttributes bits
170 */
171enum {
172 maModeIsSupportedBit = (1 << 0), /* mode is supported */
173 maExtendedInfoAvailableBit = (1 << 1), /* extended info available */
174 maOutputFuncSupportedBit = (1 << 2), /* output functions supported */
175 maColorModeBit = (1 << 3), /* 1 = color; 0 = mono */
176 maGraphicsModeBit = (1 << 4), /* 1 = graphics; 0 = text */
177 maModeIsNotVGACompatableBit = (1 << 5), /* 1 = not compat; 0 = compat */
178 maVGAMemoryModeNotAvailBit = (1 << 6), /* 1 = not avail; 0 = avail */
179 maLinearFrameBufferAvailBit = (1 << 7) /* 1 = avail; 0 = not avail */
180};
181
182/*
183 * Modes
184 */
185enum {
186 mode640x400x256 = 0x100,
187 mode640x480x256 = 0x101,
188 mode800x600x16 = 0x102,
189 mode800x600x256 = 0x103,
190 mode1024x768x16 = 0x104,
191 mode1024x768x256 = 0x105,
192 mode1280x1024x16 = 0x106,
193 mode1280x1024x256 = 0x107,
194 mode80Cx60R = 0x108,
195 mode132Cx25R = 0x109,
196 mode132Cx43R = 0x10A,
197 mode132Cx50R = 0x10B,
198 mode132Cx60R = 0x10C,
199 mode320x200x555 = 0x10D,
200 mode320x200x565 = 0x10E,
201 mode320x200x888 = 0x10F,
202 mode640x480x555 = 0x110,
203 mode640x480x565 = 0x111,
204 mode640x480x888 = 0x112,
205 mode800x600x555 = 0x113,
206 mode800x600x565 = 0x114,
207 mode800x600x888 = 0x115,
208 mode1024x768x555 = 0x116,
209 mode1024x768x565 = 0x117,
210 mode1024x768x888 = 0x118,
211 mode1280x1024x555 = 0x119,
212 mode1280x1024x565 = 0x11A,
213 mode1280x1024x888 = 0x11B,
214 modeSpecial = 0x81FF,
215 modeEndOfList = 0xFFFF
216};
217
218/*
219 * Get/Set VBE Mode parameters
220 */
221enum {
222 kCustomRefreshRateBit = (1 << 11),
223 kLinearFrameBufferBit = (1 << 14),
224 kPreserveMemoryBit = (1 << 15)
225};
226
227/*
228 * CRTC information block passed to function 4F02
229 * to override default refresh rate.
230 */
231#pragma pack(1)
232
233typedef struct {
234 unsigned short HTotal;
235 unsigned short HSyncStart;
236 unsigned short HSyncEnd;
237 unsigned short VTotal;
238 unsigned short VSyncStart;
239 unsigned short VSyncEnd;
240 unsigned char Flags;
241 unsigned long PixelClock; /* in Hz */
242 unsigned short RefreshRate; /* units of 0.01 Hz */
243 unsigned char Reserved[40];
244} VBECRTCInfoBlock;
245
246#pragma pack()
247
248/*
249 * Defined flags for 'Flags' field in VBECRTCInfoBlock.
250 */
251enum {
252 kCRTCDoubleScannedMode = (1 << 0),
253 kCRTCInterlacedMode = (1 << 1),
254 kCRTCNegativeHorizontalSync = (1 << 2),
255 kCRTCNegativeVerticalSync = (1 << 3)
256};
257
258/*
259 * The type of paramter passed to generateCRTCTimings().
260 */
261enum {
262 kCRTCParamRefreshRate,
263 kCRTCParamPixelClock
264};
265
266/*
267 * Palette
268 */
269typedef unsigned long VBEPalette[256];
270
271extern int getVBEInfo(void *vinfo_p);
272extern int getVBEModeInfo(int mode, void *minfo_p);
273extern int getVBEDACFormat(unsigned char *format);
274extern int setVBEDACFormat(unsigned char format);
275extern int setVBEPalette(void *palette);
276extern int getVBEPalette(void *palette);
277extern int setVBEMode(unsigned short mode, const VBECRTCInfoBlock *timing);
278extern int getVBECurrentMode(unsigned short *mode);
279extern int getVBEPixelClock(unsigned short mode, unsigned long *pixelClock);
280extern int generateCRTCTiming(unsigned short width,
281 unsigned short height,
282 unsigned long paramValue,
283 int paramType,
284 VBECRTCInfoBlock * timing);
285
286#endif /* !__LIBSAIO_VBE_H */
287

Archive Download this file

Revision: 214