Драйвер | Имя константы режима и ее значение | Разрешение экрана (в точках) | Палитра | Число видеостраниц |
CGA | CGAC0 = 0 CGAC1 = 1 CGAC2 = 2 CGAC3 = 3 CGAHi = 4 | 320x200 320x200 320x200 320x200 640x200 | 4 цвета 4 цвета 4 цвета 4 цвета 2 цвета | |
MCGA | MCGAC0 = 0 MCGAC1 = 1 MCGAC2 = 2 MCGAC3 = 3 MCGAMed=4 MCGAHi = 5 | 320x200 320x200 320x200 320x200 640x200 640x480 | 4 цвета 4 цвета 4 цвета 4 цвета 2 цвета 2 цвета | |
EGA | EGALo = 0 EGAHi = 1 | 640x200 640x350 | 16 цветов 16 цветов | 2 |
- 413 -
EGA64 | EGA64Lo = 0 EGA64Hi = 1 | 640x200 640x350 | 16 цветов 4 цвета | |
EGAMono | EGAMonoHi = 3 | 640x350 | 2 цвета | 1 (2) |
Herc | HercMonoHi = 0 | 720x348 | 2 цвета | |
ATT400 | ATT400C0 = 0 ATT400C1 = 1 ATT400C2 = 2 ATT400C3 = 3 ATT400C4 = 4 ATT400Hi = 5 | 320x200 320x200 320x200 320x200 640x200 640x200 | 4 цвета 4 цвета 4 цвета 4 цвета 2 цвета 2 цвета | |
VGA | VGALo = 0 VGAMed = 1 VGAHi = 2 | 640x200 640x350 640x480 | 16 цветов 16 цветов 16 цветов | |
PC3270 | PC3270Hi = 0 | 720x350 | 2 цвета | |
IBM8514 | IBM8514Lo = 1 IBM8514 = 1 | 640x480 1024x768 | 256 цветов 256 цветов |
Как видно из таблицы, наиболее качественная «картинка» получается при использовании адаптера IBM8514. Однако он редко встречается у нас в стране, и поэтому в дальнейшем мы не будем о нем упоминать.
В мире производится огромное количество различных адаптеров, которые являются модификациями основных адаптеров, приведенных в таблице. Каждая модификация решает задачи, связанные, например, с увеличением быстродействия, разрешения или совместимости с каким-нибудь другим типом адаптера. При этом в таком адаптере всегда сохраняется стандартный блок, позволяющий работать в любом из режимов, указанных в таблице для него. Для того чтобы полностью использовать возможности установленного в ПЭВМ адаптера, необходимо воспользоваться инструкцией по работе с ним.
19.2.3.1. Процедура DetectGraph. Для тестирования графического адаптера в модуле Graph объявлена процедура:
DetectGraph( VAR GraphDriver, GraphMode : Integer )
- 414 -
Эта процедура может быть вызвана до инициализации графики. Через формальный параметр GraphDriver возвращается значение из первого столбца таблицы 19.4, а через параметр GraphMode — обычно последнее значение из соответствующего раздела второго столбца. Эти значения и рекомендуется подставлять в качестве фактических параметров в процедуру InitGraph. Если на ПЭВМ не установлена графическая плата, то функция GraphResult будет возвращать значение grNotDetected. После определения GraphDriver автоматически становится доступным диапазон графических режимов, реализуемых адаптером ПЭВМ. Дело в том, что по мере развития индустрии ПЭВМ возникали новые уровни возможностей графики (рис. 19.2).
Рис. 19.2
Адаптер Hercules несколько отличается от остальных, но тем не менее «перекрывается» старшим уровнем — адаптером VGA. Таким образом, имея адаптер VGA, можно имитировать практически все режимы, возможные на платах EGA, CCA, Hercules и т.д., имея плату
- 415 -
EGA, можно то же, кроме режимов VGA. В результате получается так называемая совместимость «снизу вверх». Поясним это на примере (рис. 19.3).
| USES Graph; { используется Graph }
| VAR
| gDriver : Integer; { для графического адаптера }
| gMode : Integer; { для графического режима }
| ErrorCode : Integer; { для кода ошибки }
| BEGIN
| DetectGraph(gDriver, gMode); { Опрос наличия и }
| ErrorCode := GraphResult; { типа адаптера. }
| if ErrorCode <> grOk then
| begin { если ошибка, то... }
| WriteLn(GraphErrorMsg( ErrorCode ));
| Halt( 1 )
| end; {if}
| if gDriver in [EGA, EGA64, VGA] { Если адаптер }
| then begin { старше CGA, то }
| gDriver := CGA; { возможен режим }