Графические устройства

         

Работа с двумя окнами видеопамяти



Работа с двумя окнами видеопамяти

Большинство исследованных автором видеокарт поддерживало работу только с одним окном А. Исключением явился акселератор тасЬб4 фирмы ATI Technologies Inc., у которого для доступа к видеопамяти используется два окна. Запись данных в видеопамять осуществляется через окно А, а чтение — через окно в. Оба окна отображены на один видеосегмент АОООЬ. При обращениях к видеопамяти видеоконтроллер самостоятельно выбирает нужное окно, в зависимости от того записываются данные или считываются. Программисту остается "только" следить за тем, какое из двух окон надо переключать при достижении границы сегмента. Но это "только" может стать серьезным камнем преткновения для неискушенного программиста.

Стандартом VESA предусмотрена возможность работы с двумя окнами А и В, чем говорилось при описании функции BIOS 4F05h. Для работы с окном А (его установки или чтения) регистры (младший байт регистра bx) должен быть очищен, а для работы с окном в в него записывается единица. Если существует только одно окно, то оно имеет имя А и доступно для записи и чтения. Для проверки количества окон достаточно проанализировать состояние окна в, т. к. А заведомо существует. Если окно в доступно только для чтения, то А будет доступно лишь для записи или наоборот. Оба окна не могут быть доступны для выполнения одной и той же операции с видеопамятью, поскольку в таком случае придется вводить специальный механизм выбора нужного окна, а он стандартом VESA не предусмотрен.

При поддержке видеокартой двух окон возможны два способа работы с ними. Первый способ (в описании стандарта VESA он называется overlapping windows) основан на одновременном (синхронном) изменении номеров обоих окон. Второй (в описании стандарта VESA он называется distinguished windows) — на независимом изменении номеров окон (различение окон).



Содержание раздела