112 lines
4.6 KiB
C
112 lines
4.6 KiB
C
//
|
|
// 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;
|