}
main ()
if (IfindCirrus ()) {
printf ("\nCirrus card not found"); exit (1 );
}
setCirrusMode ( 0x5F ); // 640x480x256
for (int i = 0; i < 640; f++ )
for(intj = 0;j<480;j++)
writePixel (i, j, ((i/20)+1 )*(j/20+1));
getch();
}
Тем самым можно построить библиотеку, обеспечивающую работу с основными SVGA-картами. Сильная привязанность подобной библиотеки к конкретному набору карт - ее главный недостаток.
Ассоциацией стандартов в области видеоэлектроники - VESA (Video Electronic Standarts Association) была сделана попытка стандартизации работы с различными SVGA-платами путем добавления в BIOS-платы некоторого стандартного набора функций, обеспечивающего получение необходимой информации о карте, установку заданного режима и банка памяти. При этом также вводится стандартный набор расширенных режимов. Номер режима является 16-битовым числом, где биты 9-15 зарезервированы и должны быть равны нулю, бит 8 для VESA-режимов равен единице, а для родных режимов карты - нулю.
Приведем таблицу основных VESA-режимов.
Номер Разрешение Бит на пиксел Количество цветов
lOOh 640x400 8_J256_
101 h 640x480 8_J256__
102h 800x600 4___16_
103h 800x600 __8__256_
104h 1024x768 4__16 _
105h 1024x768 8_256___
106h 1280x1024 4__16_
107h 1280x1024 8_ 256 _
lODh [320x200 | 15 |32K
Компьютерная графика. Полигональные модели
| lOEh | 320x200 |
64 К |
|
| lOFh | 320x200 | 16M | |
| 11 Oh | 640x480 |
32 К |
|
| lllh | 640x480 |
64 К |
|
| 112h | 640x480 | 16M | |
| 113h | 800x600 |
32 К |
|
| 114h | 800x600 |
64 К |
|
| 115h | 800x600 |
16М |
|
| 116h | 1024x768 |
32 К |
|
| 117h | 1024x768 |
64 К |
|
| 118h | 1024x768 | 16 M | |
| 119h | 1280x1024 |
32 К |
|
| 11 Ah | 1280x1024 |
64 К |
|
| HBh | 1280x1024 |
16М |
Ниже приводятся файлы, содержащие необходимые структуры и функци работы с VESA-совместимыми адаптерами.
У // File Vesa.H
| #ifndef | VESA | |
| #define | __VESA_ | |
| // 256-color modes | ||
| #define | VESA 640x400x256 | 0x100 |
| #define | VESA 640x480x256 | 0x101 |
| #define | VESA 800x600x256 | 0x103 |
| #define | VESA 1024x768x256 | 0x105 |
| #define | VESA J 280x1024x256 | 0x107 |
| // 32K color modes | ||
| #define | VESA 320x200x32K | 0x10D |
| #define | VESA 640x480x32K | 0x110 |
| #define | VESA 800x600x32K | 0x113 |
| #define | VESA 1024x768x32K | 0x116 |
| #define |
VESA_1280x1024Х32К |
0x119 |
| // 64K color modes | ||
| #define | VESA 320x200x64K | 0x10E |
| #define | VESA 640x480x64K | 0x111 |
| #define | VESA 800x600x64K | 0x114 |
| #define | VESA 1024x768x64K | 0x117 |
| #define | VESA_1280x1024x64K | 0x11 A |
| // 16M color mode | ||
| #define | VESA 320x200x16M | 0x1 OF |
| #define | VESA 640x480x16M . | 0x112 |
| #define | VESA 800x600x16M | 0x115 |
| #define | VESA 1024x768x16M | 0x118 |
| #define | VESA 1280x1024x16M | 0x11B |
|
||
{
