Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум КТіООР.doc
Скачиваний:
4
Добавлен:
09.11.2019
Размер:
4.21 Mб
Скачать

Основні засоби bios для роботи з відеоадаптером

VGA-сумісні відеоадаптери керуються за допомогою портів вводу/виводу, причому реальне число внутрішніх регістрів відеоадаптера, до яких можна звертатися через це вікно, перевищує 50. Оскільки BIOS надає гарну підтримку для більшості стандартних функцій, ми не будемо розглядати докладне програмування відеоадаптера на рівні портів, а тільки розглянемо основні дії, для яких прийнято звертатися до відеоадаптера напряму.

  1. Зовнішні регістри контролера vga (03c2h – 03cFh):

  • регістр стану 0 (ISR0) – доступний для читання з порта 03С2;

  • регістр виводу (MOR) – доступний для читання з порта 3CCh і для запису як 3C2h;

  • регістр стану вводу 1 (ISR1) – доступний для читання з порта 03DAH.

  1. Регістри контролера атрибутів (03c0h – 03c1h):

  • 00h – 0Fh: регістри палітри EGA;

  • 10h: регістр керування режимом;

  • 11h: регістр кольору бордюру екрану (по замовчуванню 00h);

  • 12h: регістр дозволу використання кольорових палітр;

  • 13h: регістр горизонтального панорамування;

  • 14h: регістр вибору кольору (по замовчуванню 00h).

Контролер атрибутів перетворює значення байту атрибута символу в кольори символу і т.д. Для запису в ці регістри необхідно в порт 03C0h записати номер регістру, а потім (другою командою out) – дані для цього регістра. Щоб переконатися, що 03C0h знаходиться в стані прийому номера, а не даних, треба виконати читання з ISR1 (порт 03DAh). Порт 03C1h можна використовувати для читання останнього записаного індексу або даних.

  1. Регістри графічного контролера (03cЕh – 03cFh):

  • 00h: регістр установки/скидання

  • 01h: регістр дозволу установки/скидання

  • 02h: регістр порівняння кольору

  • 03h: регістр циклічного зсуву даних

  • 04h: регістр вибору площини, що читається

  • 05h: регістр вибору режиму роботи

  • 06h: багатоцільовий регістр графічного контролера

  • 07h: регістр ігнорування палітр кольору

  • 08h: регістр бітової маски

Для звертання до регістрів графічного контролера варто записати індекс потрібного регістра в порт 03CEh, після чого можна буде читати і писати дані для обраного регістра в порт 03CFh. Якщо потрібно тільки запис у регістри, можна просто помістити індекс у AL, байт що посилається – в АН і виконати команду виводу слова в порт 03CEh. Цей контролер, у першу чергу, призначений для забезпечення передачі даних між процесором і відеопам'яттю в режимах, що використовують кольорові палітри, як, наприклад, режим 12h (640x480x16).

  1. Регістри контролера crt (03d4h – 03d4h):

Контролер CRT керує розгорткою і формуванням кадрів на дисплеї. Як і для графічного контролера, для звертання до регістрів контролера CRT варто записати індекс потрібного регістра в порт 03D4h, після чого можна буде читати і писати дані для обраного регістра в порт 03D5h. Якщо потрібно тільки запис у регістри, можна просто помістити індекс у AL, що посилається байт – в АН і виконати команду виводу слова в порт 03D4h.

  1. Регістри синхронізатора (03с4h – 03c5h):

Для звертання до регістрів синхронізатора варто записати індекс потрібного регістра в порт 03C4h, після чого можна буде читати і писати дані для обраного регістра в порт 03C5h. Аналогічно, якщо потрібно тільки запис у регістри, можна просто помістити індекс у AL, байт що посилається – в АН і виконати команду виклику слова в порт 03CEh.

Хоча BIOS і дозволяє використовувати деякі можливості цих регістрів, зокрема роботу зі шрифтами (INT 10h АН = 11h) і виключення обміну даними між відеопам'яттю і дисплеєм (INT 10h, АН = 12h, BL = 32h), пряме програмування регістрів синхронізатора разом з регістрами контролера CRT дозволяє значно змінювати характеристики відеорежимів VGA, аж до установки нестандартних відеорежимів. Найбільш популярними режимами є так називані режими «X» з 256 кольорами і з 320 чи 360 пікселів по горизонталі і 200, 240, 400 чи 480 пікселій по вертикалі. Оскільки такі режими не підтримуються BIOS, для їхньої реалізації потрібно написати всі необхідні процедури – встановлення відеорежиму, вивід пікселя, читання пікселя, переключення сторінок, зміна палітри, завантаження шрифтів. При цьому для всіх режимів з цієї серії, крім 320x240x256, слід також враховувати змінене співвідношення розмірів екрану по вертикалі і горизонталі, щоб коло, виведений на екран, не виглядав як еліпс, а квадрат – як прямокутник.