Использование BIOS видеоадаптера для диагностики видеосистемы ПК.
С помощью специальных программ системную плату ПК можно превратить в универсальный стенд для диагностирования и ремонта большинства узлов и устройств компьютера. Обычно, достаточно однократного выполнения в отладчике (например, AFD) небольшой специальной программы, запускающей контролируемый процесс в устройстве. Затем с помощью AFD прочитать, например, регистры ошибок и состояний внешнего устройства, коды ошибок в регистре АН микропроцессора т.п.. При создании таких программ удобно использовать программы BIOS. Современным материнским платам с UEFI, не нужна BIOS, но есть модуль поддержки совместимости и поэтому те программы, которым для работы нужен BIOS, могут спокойно могут работать и на компьютерах с UEFI. Для контроля и диагностирования видеосистемы удобно использовать ее BIOS.
Стандартная BIOS (Basic Input/Output System) видеоадаптера располагается в видео-ПЗУ (Video ROM), кроме него там находятся экранные шрифты, служебные таблицы и т.п.
BIOS не используется видеоконтроллером напрямую. К BIOS обращается только центральный процессор, и в результате выполнения им программ BIOS, происходят обращения к видеоконтроллеру и видеопамяти. На многих современных видеоадаптерах устанавливаются перепрограммируемые посредством электричества видео-ПЗУ (EEPROM, Flash ROM), допускающие обновление BIOS видеоадаптера пользователем с помощью специальной программы из комплекта видеоадаптера.
Дисплейный адаптер, как обязательный компонент персонального компьютера, имеет поддержку основных функций в BIOS. Эти функции выполняются через вызов программного прерывания INT 10h - видеосервиса BIOS. Видеосервис позволяет установить видеорежим (BIOS Video Mode), определяющий формат экрана. Первоначально для задания номера режима отводился один байт, и режим устанавливался параметром функции “0h” INT 10h (АН=0, AL=Mode). Режимы 0-13h являются стандартными для адаптеров MDA, CGA, EGA, VGA. Режимы 14h-7Fh используются с нестандартными VGA- или SVGA-расширениями BIOS, они специфичны для конкретных моделей графических адаптеров. Позже появилось стандартизованное расширение функций видеосервиса VBE (VESA BIOS Extensions) для адаптеров VGA, SVGA и были определены новые видеорежимы с двухбайтными номерами старше 100h. Эти режимы устанавливаются параметром функции “4F02h” INT 10h (AX=4F02h, BX=VMode).
В пределах возможностей установленного видеорежима видеосервис предоставляет возможности отображения информации на различных уровнях качества. Простейший для программиста телетайпный режим позволяет посылать поток символов, которые будут построчно отображаться на экране с отработкой символов возврата каретки, перевода строки, обеспечивая «прокрутку» изображения при заполнении экрана. Есть функции и для полноэкранной работы с текстом, при которой доступны и атрибуты символа. В графическом режиме имеется возможность чтения и записи пиксела с указанными координатами.
Однако видеосервисом INT 10h программисты пользуются далеко не всегда, поскольку работает он довольно медленно. Существенно ускорить работу видеосервиса позволяет затенение области ROM BIOS, хранящей программный код драйверов (Video BIOS Shadowing). Однако самым быстрым способом построения видеоизображений, будет прямая работа с видеопамятью или непосредственное общение с акселератором графического контроллера.
Так что у программиста (и пользователя) обычно есть выбор - от медленной работы, не задумываясь об архитектуре конкретного дисплейного адаптера, до быстрой работы с конкретной моделью адаптера. Во втором варианте расплатой за скорость будет забота о разработке драйверов для всех (или хотя бы популярных) моделей графических адаптеров. Архитектура допускает установку до двух графических адаптеров с раздельными мониторами. Аппаратного конфликта ресурсов не будет, если один из адаптеров - MDA или HGC, а другой - CGA, EGA или VGA. При этом оба адаптера будут поддерживаться функциями видеосервиса. Двойные графические системы используются довольно редко. Пакеты САПР, для которых такое разделение может быть эффективным, работают с адаптерами через собственные драйверы. Графические адаптеры класса SVGA, поддерживающие РnР, могут обеспечивать перемещение адресов требуемых системных ресурсов, и, следовательно, в системе может присутствовать несколько таких адаптеров. Существуют также и многоканальные графические карты, которые содержат несколько независимых однотипных графических адаптеров. Такие карты применяют в многотерминальных компьютерах на базе PC.
Таблица 1. Функции видеосервиса BIOS INT 10h
Функция |
Название |
Стандартные (базовые) функции |
|
00h |
Установка видеорежима |
01h |
Установка размера и формы курсора |
02h |
Установка позиции курсора |
03h |
Чтение позиции курсора |
04h |
Чтение светового пера |
05h |
Выбор активной видеостраницы |
06h |
Прокрутка (очистка) в окне вверх |
07h |
Прокрутка в окне вниз |
08h |
Чтение символа и атрибута |
09h |
Запись символа и атрибута |
0Ah |
Запись символа |
0Bh |
Выбор палитры и бордюра |
0Ch |
Запись графического пиксела |
0Dh |
Чтение графического пиксела |
0Eh |
Вывод в телетайпном режиме |
0Fh |
Чтение видеорежима |
Расширенные функции для адаптеров EGA и VGA |
|
10h |
Установка палитры (EGA, VGA) |
11h |
Знакогенератор (EGA, VGA) |
12h |
Специальные функции (EGA, VGA) |
12h |
Вывод строки (EGA, VGA) |
14h-15h |
Функции LCD-дисплея (PC Convertable) |
1Ah |
Чтение/установка кодов активного и дополнительного дисплеев (VGA) |
1Bh |
Чтение блока данных состояния и возможностей видеосистемы (VGA) |
1Ch |
Сохранение и восстановление состояния видеосистемы (VGA) |
Графические функции SVGA VBE (VESA BIOS Extensions):
|
|
4F00h |
Проверка наличия поддержки VBE |
4F01h |
Информация о режимах VBE |
4F02h |
Установка видеорежимов VBE |
4F03h |
Информация о текущем видеорежиме VBE |
4F04h |
Сохранение и восстановление состояния видеосистемы SVGA |
4F05h |
Определение окна видеопамяти SVGA |
4F06h |
Установка/чтение длины строки |
4F07h |
Установка/чтение начала экрана |
4F08h |
Установка/чтение формата палитр DAC |
4F09h |
Установка/чтение регистров палитр (RAMDAC) |
4F0Ah |
Интерфейс VBE защищенного режима |
Функции дополнительной поддержки VBE |
|
4F10h |
Управление энергопотреблением |
4F11h |
Интерфейс плоских экранных панелей (Flat Panel Interface Extensions — FP) |
4F12h |
Расширение интерфейса курсора |
4F13h |
Расширение аудиоинтерфейса |
4F14h |
Расширение по усмотрению производителя |
4F15h |
Канал связи с монитором (DDC) |
4F16h |
Конфигурирование графической системы |
Устанавливает текущий видеорежим. При вызове:
AH=00h
АL= видеорежим:
Например, 03h - текстовый, 80х25 строк, 16 цветов
10h - графический, 640х350 точек,16 цветов
04h - графический, 320х200 точек, 4 цвета (видеоадаптер CGA)
Задает положение курсора на экране в текстовых координатах на указанной текстовой странице(в том числе не активной).
При вызове:
AH = 02h
ВН = страница
DН = строка
DL = столбец
Записывает символ и его атрибут в текущую позицию курсора как в графическом, так и в текстовом режимах.
В графическом режиме символы не должны переходить на следующую строку.
Все коды в AL рассматриваются, как знаки и не управляют положением курсора.
После вывода символа курсор следует сместить к следующей позиции функцией 02h.
Коэффициент повторения позволяет выводить строки одинаковых символов (но курсор не смещается).
В текстовом режиме символ выводится с указанным атрибутом, т.е. заданного цвета на заданном фоне.
В графическом режиме содержимое BL влияет только на цвет символа, но не фона под ним. Однако графическое изображение под знакоместом затирается.
При вызове:
AH=09h
AL=cиmboл
ВН = страница
ВL = атрибут (текстовый режим) или цвет(графический режим)
СХ = коэффициент повторения
Атрибут символа определяет цвет символа и фона под ним, а также некоторые дополнительные характеристики изображения на экране.
В биты 0...2 байта атрибутов записывается код цвета символа, а бит 3 при исходной настройке видеоадаптера, действующей по умолчанию, управляет яркостью символа. Таким образом, каждый символ независимо от других может принимать любой из 16 возможных цветов. Соответствие кодов, записываемых в байте атрибута, конкретным цветам составляет палитру видеосистемы. Палитра устанавливается программно, по умолчанию действует назначение кодов приведенное в табл.
Стандартные коды цветов |
|||
Значение кода |
Цвет |
Значение кода |
Цвет |
0h |
Черный |
8h |
Серый |
lh |
Синий |
9п |
Голубой |
2h |
Зеленый |
Ah |
Салатный |
3h |
Бирюзовый |
Bh |
Светло-бирюзовый |
4h |
Красный |
Ch |
Розовый |
5h |
Фиолетовый |
Dh |
Светло-фиолетовый |
6h |
Коричневый |
Eh |
Желтый |
7h |
Белый |
Fh |
Ярко-белый |
Записывает в видеобуфер точку заданного цвета в заданной графической позиции.
При вызове:
AH=0Ch
AL-цвет (номер цветового регистра)
ВН - страница
СХ=графический столбец
DX=графическая строка
Читает из кольцевого буфера ввода символ и скан-код.
Если буфер пуст - ожидает ввода.
При вызове: AH=00h
При возврате: АН=скан-код, AL=сиmboл ASCII
INT 20h . Передача управления тому процессу, который запустил на исполнение данную программу (например, программа запущена из меню VC – по INT 20 вернется управление в меню VC).