blob: fa01c3b0e520ee5842be287e929c399b1f595e97 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
//
// This structure is in little endian format i.e. compatible with the
// 386 byte addressing method.
//
//
// The device data record for the Monitor peripheral.
//
typedef struct _CM_MONITOR_DESCRIPTION {
UCHAR VDDPVersion; // Structure version
UCHAR FileRevision; // Structure revision
USHORT Date[3]; // Structure date
// [0]=Year / [1]=month / [2]=day
ULONG Checksum; // Total Number of bytes in the file
// This should be chekced against:
// Checksum = sizeof(CM_MONITOR_DESCRIPTION) +
// NumberOperationalLimits * sizeof(CM_MONITOR_OPERATIONAL_LIMITS) +
// NumberPreadjustedTImings * sizeof(CM_MONITOR_PREADJUSTED_TIMING);
UCHAR Manufacturer[12]; // ASCII ID of the manufacturer
UCHAR ModelNumber[12]; // ASCII ID of the model
UCHAR Version[12]; // ASCCI ID of the model version
UCHAR SerialNumber[12]; // ASCII ID
USHORT DateManufactured[3]; // [0]=Year / [1]=month / [2]=day
USHORT RedPhosphoreDecay; // milliseconds
USHORT GreenPhosphoreDecay; // milliseconds
USHORT BluePhosphoreDecay; // milliseconds
UCHAR StartUpCompatibility[3]; // name of device compatible with
UCHAR MonitorType; // monochrome=0 / Color=1
UCHAR CRTSize; // inches
UCHAR BorderColorRed; // percentage of Red in border color
UCHAR BorderColorGreen; // percentage of Green in border color
UCHAR BorderColorBlue; // percentage of Blue in border color
USHORT WhiteChromaticityX; //
USHORT WhiteChromaticityY; //
USHORT WhiteChromaticityZ; //
USHORT RedChromaticityX; //
USHORT RedChromaticityY; //
USHORT GreenChromaticityX; //
USHORT GreenChromaticityY; //
USHORT BlueChromaticityX; //
USHORT BlueChromaticityY; //
USHORT WhiteGamma; //
USHORT RedGamma; //
USHORT GreenGamma; //
USHORT BlueGamma; //
USHORT NumberOperationalLimits; // number of operational limits
USHORT NumberPreadjustedTimings; // number of timings structures
USHORT Unused;
} CM_MONITOR_DESCRIPTION, *PCM_MONITOR_DESCRIPTION;
typedef struct _CM_MONITOR_OPERATIONAL_LIMITS {
ULONG MinimumHorizontalFrequency; // Hertz
ULONG MaximumHorizontalFrequency; // Hertz
ULONG MinimumVerticalFrequency; // milliHertz
ULONG MaximumVerticalFrequency; // milliHertz
ULONG MaximumPixelClock; // Hertz
USHORT MaximumHorizontalDots; // dots
USHORT MaximumVerticalLines; // lines
USHORT MinimumHorizontalRetrace; // nanoseconds
USHORT MinimumVerticalRetrace; // microseconds
USHORT HorizontalLineDimension; // millimeters
USHORT VerticalHeightDimension; // millimeters
} CM_MONITOR_OPERATIONAL_LIMITS, *PCM_MONITOR_OPERATIONAL_LIMITS;
typedef struct _CM_MONITOR_PREADJUSTED_TIMING {
UCHAR Version; // Should match the monitor description
UCHAR Revision; // version and revision values
UCHAR PreadjustedTimingName[12]; // ASCII ID of the Preadjusted timing
USHORT HorizontalResolution; // dots
USHORT VerticalResolution; // lines
UCHAR PixelWidthRatio; // used with PixelHeight to form ratio
UCHAR PixelHeightRatio; // gives H:V
ULONG HorizontalFrequency; // Hertz
ULONG VeriticalFrequency; // millihertz
USHORT VertivalActiveHeight; // millimeters
USHORT HorizontalActiveLineLength; // millimeters
UCHAR VideoType; // TTL=0 / analog=1 / ECL=2
UCHAR VideoLevel; // 0.7 Vp-p=0 / 1.0 Vp-p=1
UCHAR SyncType; // TTL=0 / analog=1 / ECL=2
UCHAR Unused;
UCHAR SyncConfiguration; // separate=0 / composite=1 / green=2
UCHAR ScanType; // noninterlaced=0 / interlaced=1
UCHAR HorizontalSyncPolarity; // negative=0 / positive=1
UCHAR VerticalSyncPolarity; // negative=0 / positive=1
ULONG HorizontalAcitve; // nanoseconds
ULONG VerticalActive; // microseconds
USHORT HorizontalRightBorder; // nanoseconds
USHORT HorizontalFrontPorch; // nanoseconds
USHORT HorizontalPulseWidth; // nanoseconds
USHORT HorizontalBackPorch; // nanoseconds
USHORT HorizontalLeftBorder; // nanoseconds
USHORT VerticalBottomBorder; // microseconds
USHORT VerticalFrontPorch; // microseconds
USHORT VerticalPulseWidth; // microseconds
USHORT VerticalBackPorch; // microseconds
USHORT VerticalTopBorder; // microseconds
} CM_MONITOR_PREADJUSTED_TIMING, *PCM_MONITOR_PREADJUSTED_TIMING;
|