Программирование видеоадаптеров CGA, EGA и VGA



Определение конфигурации (функция _getvideoconfig()) - часть 2


void main(void) { struct videoconfig vc;

// заполняем поля структуры vc

_getvideoconfig( &vc );

// выводим на экран данные,записанные в структуру vc

printf("\nТип видеоадаптера: "); switch(vc.adapter) { case _MDPA : puts("MDA."); break;

case _CGA : puts("CGA."); break;

case _EGA : puts("EGA."); break;

case _VGA : puts("VGA."); break;

case _MCGA : puts("MCGA."); break;

case _HGC : puts("Hercules."); break;

default : puts(" неизвестный."); }

printf("\nТип дисплея: "); switch(vc.monitor) { case _MONO : puts("монохромный."); break;

case _COLOR : puts("цветной или эмулирующий его."); break;

case _ENHCOLOR : puts("улучшенный цветной."); break;

case _ANALOGMONO : puts("монохромный аналоговый."); break;

case _ANALOGCOLOR : puts("цветной аналоговый."); break;

case _ANALOG : puts("аналоговый."); break;

default : puts("неизвестный."); }

printf("\nОбъем видеопамяти %dК байт.", vc.memory );

printf("\n\nНомер режима: %d.", vc.mode );

printf("\n\nЧисло доступных страниц видеопамяти: %d.", vc.numvideopages );

// если режим работы видеоадаптера графический

if(vc.numxpixels) { printf("\n\nРазрешающая способность:%dx%d пикселов.", vc.numxpixels, vc.numypixels );

printf("\n\nКоличесво бит на пиксел: %d.", vc.bitsperpixel ); } printf("\n\nЧисло символов в строке: %d.", vc.numtextcols );

printf("\n\nЧисло строк: %d.", vc.numtextrows );

printf("\n\nЧисло цветов: %d.", vc.numcolors ); }

Другим, низкоуровневым способом определения типа первичного видеоадаптера, является тестирование переменных BIOS, находящихся по адресам 0000:0410 и 0000:0487, а также вызов функций 1Ah и 12h десятого прерывания.




Содержание  Назад  Вперед