"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автораEGA отсутствует. Если этот байт ненулевой, то когда бит 3=0, EGA
является активным адаптером, а когда он равен 1, то активен вто- рой адаптер. Когда присутствует EGA, то проверка наличия монохромного или цветного адаптера осуществляется записью значения в регистр адре- са курсора микросхемы 6845 [4.1.1] и последующего чтения значения и проверки их на совпадение. Для монохромной карты пошлите 0FH в порт 3B4H, чтобы указать на регистр курсора, а затем прочитать и записать адрес курсора через порт 3B5H. Соответствующие порты для цветной карты 3D4H и 3D5H. Когда карта отсутствует, то порт возв- ращает значение 0FFH; но поскольку это значение может содержаться в регистре, то недостаточно простой проверки на это значение. Имеются два добавочных вопроса, на которые могут потребоваться ответы при наличии EGA: сколько имеется памяти на его карте и какой тип монитора подсоединен? Для определения типа дисплея проверьте бит 1 по адресу 0040:0087; когда он установлен, то подсоединен ммонохромный дисплей, а когда он равен нулю - цвет- ной. Если Ваша программа использует цветной графический режим с 350 строками, то надо также определить присоединен ли дисплей IRGB или R'G'B'RGB, где последняя аббревиатура соответствует улучшеному цветному дисплею IBM. Это определяется установкой четырех переключателей на карте EGA. Установка этих переключате- лей возвращается в CL при обращении к функции 12H прерывания 10H. Цепочка четырех младших битов должна быть 0110 для улучшенного цветного дисплея. Та же самая функция сообщает и наличие памяти 128, 2 - для 192 и 3 - для полных 256K памяти дисплея. Высокий уровень. Приведенные фрагменты кода определяют тип текущего монитора и режим его работы, а также определяют какие типы видеоадаптеров имеются в машине: 100 '' 'определение активного адаптера 110 DEF SEG = &H40 'указываем на область данных BIOS 120 X = PEEK(&H87) 'проверка на наличие EGA 130 IF X = 0 THEN 200 'EGA отсутствует, идем дальше 140 IF X AND 8 = 0 THEN... 'активный монитор EGA . . 200 X = PEEK(&H10) 'читаем байт статуса оборудования 210 Y = X AND 48 'выделяем биты 4 и 5 220 IF Y = 48 THEN ... '... тогда монохромный (00110000) 230 IF Y = 32 THEN ... '... тогда цветной 80*25 (00100000) 240 IF Y = 16 THEN ... '... тогда цветной 40*25 (00010000) Следующий пример проверяет наличие монохромной карты, когда активной является карта EGA или цветная. Тот же пример можно использовать для проверки наличия цветной карты если использовать |
|
|