Assembler для начинающих



         

Функции ввода-вывода дисплея - часть 2


    проверки битов поля EQUIP_FLAG, которые соответствуют текущему
    дисплею. Если биты 5 и 4 оба равны 1, то в системе присутствует
    монохромный адаптер. Любая другая установка бит говорит о том, что
    в системе работает цветной адаптер. Фирма IBM написала эту
    программу таким способом, исходя из того, что система может иметь
    только один дисплейный адаптер. Перед первым включением машины вы
    должны установить переключатели на системной плате в положение,
    показывающее, какой адаптер дисплея используется.
 
      Информация флагов оборудования в поле EQUIP_FLAG определяет,
    какой из адресов буфера будет использовать видеопрограмма BIOS. Для
    монохромной платы BIOS загружает в регистр ES значение 0B000H, а
    для цветной платы - значение 0B800H. Это позволяет остальным
    программам дисплея BIOS работать без использования информации о
    том, какой адаптер работает в системе. Все ссылки к буферу делаются
    относительно регистра ES.
      Вы можете решить, что, поскольку поле EQUIP_FLAG показывает,
    какой адаптер используется, можно переключаться от одного адаптера
    к другому просто изменяя биты в слове флагов. К сожалению, это не
    так, Адрес ввода-вывода контроллера 6845 отличается для двух
    адаптеров, и BIOS записывает этот базовый адрес в свою область
    данных. Видеопрограмма BIOS заносит в переменную ADDR_6845 этот
    адрес только при инициализации адаптера (команда AH = 0). Поэтому
    переключение от одного дисплея к другому также требует
    корректировки этой переменной.
 
      Даже если переменная CURSOR_POSN содержит восемь позиций, она
    не может обслуживать переключение на другой дисплей. Вы должны
    сбрасывать положение курсора в области данных BIOS всякий раз при
    переключении с одного адаптера на другой. Если вы не сделаете
    этого, изображение курсора не будет соответствовать его положению,
    записанному в области данных, и символ на экране будет записываться
    в неверную позицию.
 



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