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

Контрольні запитання:

1. Які модулі ПК беруть участь в формуванні зображення.

2. Особливості растрового принципу формування зображення і призначення керуючих сигналів.

3. Проведіть порівняльну характеристику відеоадаптерів МДА, CGF, EGA, VGA, MCGA.

4. Структура відеоадаптера EGA. Призначення основних модулів.

5. Особливості адресації до відеопам’яті з боку процесора і з боку адаптеру в текстовому режимі.

6. Структура відеопам’яті в текстовому режимі. Байти символів і байти атрибутів.

Лабораторна робота №8 Робота з відеопам’яттю в графічному режимі.

Мета роботи: надбання практичних навичок роботи з відеопам’яттю в графічному режимі, керування екраном, кольором, зображення крапки.

Теоретичні відомості.

Кольоровий графічний адаптер має три графічних режими, PCjr - шість, а EGA - сім. Вимоги до розміру пам'яті істотно розрізняються для доступних режимів в залежності від розширення екрану і числа кольорів. В своїх покращених графічних режимах EGA використовує пам'ять дисплею зовсім по-іншому, ніж інші відеосистеми, але він точно емулює їхні засоби роботи з пам'яттю в трьох загальних режимах.

Кольоровий графічний адаптер CGA і система PCjr.

Спочатку розглянемо кольоровий адаптер і систему PCjr. Два кольори (чорний і білий) вимагають тільки один біт пам'яті для кожної крапки на екрані. Чотири кольори займають 2 біти, а 16 кольорів – (8-кольорові режими не використовуються, оскільки три біти, необхідні для їхнього подання, не можна зручно розмістити в бітах байта). Для всіх режимів по вертикалі є 200 крапок. Низький дозвіл (що використовується тільки на PCjr) виводить 160 крапок по горизонталі, середній дозвіл – вдвічі більше (320 крапок), а високий дозвіл – ще вдвічі більше (640 крапок).

В дво- і чотирьохкольорових режимах PCjr має можливість вибрати будь-який з 16 доступних кольорів. Кольоровий адаптер більш обмежений. В двокольоровому режимі він завжди обмежений білим і чорним, а в чотирьохкольоровому режимі тільки колір фону може обиратися з 16 кольорів, в той час як основний колір потрібно брати тільки з двох визначених палітр. Палітра 0 містить коричневий, зелений і червоний кольори, а палітра 1 - циан, магнета і білий.

На відміну від текстових даних в режимах 4-6 і 8 графічні дані розбиті на відеосторінки на частини. В більшості режимів дані розбиваються на дві частини, при цьому перша половина буферу містить дані для парних рядків екрану, а друга - для непарних (рядки нумеруються починаючи з верху екрану вниз). Однак в 16-кольорових режимах PCjr буфер розміром 32К ділиться на чотири частини, кожна з яких містить дані для кожного четвертого рядка.

В 4-кольорових режимах перший байт буферу містить інформацію про самі ліві крапки рядка 0, причому старший біт відноситься до самої лівої крапки. Другий байт містить інформацію про наступний сегмент рядка і т. д. Для всього рядка вимагається 80 байт. 81-й байт містить інформацію про лівий кінець рядка 2. В 16-кольорових режимах картина приблизно така ж, але для кожного рядка вимагається 160 байт і кожна частина буферу містить дані тільки для вдвічі меншого числа рядків. Для кольорового графічного адаптеру парні рядки займають пам'ять зі зміщеннями від 0000 до 1F3FH, а непарні - від 2000H до 3F3FH. Проміжок між 1F3FH і 2000Н ігнорується.

Для кольорового графічного адаптеру колір доступний тільки в режимі помірного дозволу. Для кожної крапки відводяться два біти кожного байта відеобуфера. Чотири можливі комбінації цих бітів представляють один фоновий і три основні кольори. Фоновий колір може бути будь-яким з 16. Однак три основних кольори можуть вибиратися з однієї з двох палітр, кожна з яких містить тільки три визначені кольори (табл.8.1):

Таблиця 8.1 – Можливі значення кольорів.

Номер коду

Ланцюжок бітів

Палітра 0

Палітра 1

0

00

колір фону

колір фону

1

01

зелений

ціан

2

10

червоний

магента

3

11

жовтий/коричневий

білий

Якщо ви в якийсь момент переключилися між палітрами, то всі виведені на екран кольору будуть відповідно змінені.

Відзначимо, що BIOS зберігає в своїй області даних однобайтову змінну, що містить поточний номер палітри. Її адреси - 0040: 0066Н. Зміна цього числа не міняє поточне встановлення палітри; навпаки, якщо ви зміните колір палітри іншими засобами, окрім функцій операційної системи, то значення цієї змінної буде модифіковане.

Для кольорового адаптеру ми можемо отримати доступ до "регістру вибору кольору" через порт 3D9H. В графічних режимах цей регістр діє по-іншому, ніж в текстових. біти 0-3 містять інформацію про фоновий колір в звичайному форматі (відповідно синій, зелений і червоний компоненти і інтенсивність). біт 5 вибирає палітру, і коли цей біт рівний 0, то призначається палітра номер 0. В графічних режимах інші біти не мають значення. Цей регістр тільки для запису, тому ви повинні вказувати інформацію і про фоновий колір, і про палітру при зміні будь-якого з них.

Розширений графічний адаптер.

Розширений Графічний Адаптер (Enhanced Graphics Adapter - EGA) фірми IBM являє собою графічний контролер, що забезпечує можливість роботи в різноманітних відеорежимах спільно з кольоровими або монохромними моніторами з цифровими входами. Крім того, адаптер забезпечує можливість роботи зі світловим пером. Адаптер може функціонувати в декількох графічних режимах (використовуються 4-бітові площини) і володіє можливістю завантаження в відеопам’ять шрифтів в алфавітно-цифрових режимах. Адаптер містить в собі 64Кбайт пам'яті, оформленої в вигляді 4-бітових площин по 16 Кбайт. Крім того, забезпечується можливість розширення пам'яті адаптеру до 128 Кбайт або 256 Кбайт.

Масштабування екранних координат.

Для більшості графічних режимів потрібно враховувати ще й ту обставину, що лінійна щільність на фізичному екрані по горизонталі і вертикалі різноманітна. Наприклад, в режимі 640x200 на екрані монітору з діагоналлю 13 дюймів (біля 34 см) щільність складає приблизно 70 пікселей на дюйм по горизонталі і 30 пікселей на дюйм по вертикалі, тому для отримання неспотворених зображень на екрані вони повинні масштабуватися з урахуванням графічного режиму.

Масштабувати координати (x, y) потрібно для всіх пікселей всіх геометричних зображень в тих режимах, коли масштабний коефіцієнт не рівний 1.00 В іншому випадку квадрати будуть мати вигляд прямокутників, а кола еліпсів. Більш того, необхідно корегувати масштабний коефіцієнт з урахуванням характеристик кожного графічного режиму. В табл.8.2 наведені значення масштабних коефіцієнтів для графічних режимів персональних комп'ютерів фірми IBM. В цій таблиці припускається, що коефіцієнт форми (aspect ratio), тобто відношення ширини екрану до висоти, складає 1.33 для кольорових моніторів і 1.45 для монохромних. Відзначимо, що для режиму 640x480 масштабний коефіцієнт точно рівний 1.00, що спрощує графічне програмування.

Таблиця 8.2 – Значення масштабних коефіцієнтів

номер режиму

опис режиму

масштабний коефіцієнт

4,5

4 кольори, 320x200

1.20

6

2 кольори, 640x200

2.40

0Dh

16 кольорів, 320x200

1.20

0Eh

16 кольорів, 640x200

2.40

0Fh

моно, 640x350

1.26

10h

16 кольорів, 640x350

1.37

11h

2 кольори, 640x480

1.00

12h

16 кольорів, 640x480

1.00

13h

256 кольорів, 320x200

2.40

Основні компоненти.

Блок керування електронно-променевою трубкою (CRT Controller) керує сигналами горизонтальної і вертикальної синхронізації, початковою адресою виводу в відеобуфері, положенням і формою курсору та ін. Блок синхронізації (Sequencer) генерує тактові сигнали і сигнали для синхронізації доступу до відеопам’яті. Даним засобом забезпечується можливість доступу до відеопам’яті з боку процесора в спеціально виділені моменти часу в проміжку між інтервалами часу, необхідними для доступу до відеопам’яті в процесі регенерації зображення на екрані дісплею. В цьому ж блоку містяться регістри керування записом даних в бітові площині.

Графічний контролер (Graphics Controller) спрямовує дані з пам'яті в контролер атрибутів і в процесор. В графічних режимах дані з відеопам’яті пересилаються в мікросхему контролера атрибутів послідовно. В текстових режимах дані пересилаються в паралельній формі в обхід графічного контролера. Для швидкої зміни зображення на екрані дісплею апаратурою забезпечується можливість запису 32 біт даних за один цикл пам'яті (8 біт для кожної площини), а додаткова логіка дозволяє процесору записувати дані в дисплейную пам'ять не дотримуючись кордонів байтів.

Контролер атрибутів (Attribute controller) встановлює кольоріву палітру з 16 кольорів, кожний з яких може бути визначений незалежно від інших кольорів. На вхід монітору подається 6-ти бітовий код кольору. Цією ж мікросхемою виконуються дії по керуванню блиманням і підкреслюванням. Контролер одержує дані з відеобуфера і перетворює їх в керуючі сигнали, що подаються на вхід монітору.

Відеобуфер (Display Buffer). Розмір відеобуфера (що називається також відеопам’яттю або пам'яттю адаптера) рівний 64 Кб. Відеобуфер доступний з боку процесора як на читання так і на запис і складається з 4 бітових площин по 16 Кб. Існує можливість розширення відеобуфера до 128 Кб. На платі розширення встановлені роз’єми для підключення ще 128 Кб пам'яті, що дозволяє довести розмір відеобуфера до 256 Кб. При цьому в кожну бітову площину додається два додаткових банка пам'яті по 16 Кб.

З метою сумісності з більш ранніми моделями відеоадаптерів, адреси відеобуфера можуть змінюватися. Можливі 4 варіанти. Відеобуфер може бути встановлений довжиною 128 Кб і починатися з сегментної адреси A0000, довжиною 64 Кб і починатися з адреси A0000, довжиною 32 Кб і починатися з адреси B0000 або довжиною 32 Кб з початком за адресою B8000.

Базова система введення/виведення відеоадаптера (BIOSV) знаходиться в пам'яті спеціального ПЗП встановленого на платі адаптеру BIOSV об'єднується з системною базовою системою введення/виведення. Тут містяться шрифти, що використовуються для генерації символів і керуючі програми відеоадаптера. Розмір ПЗП - 16 Кб, початкова адреси C0000.

Робота в графічному режимі 16/64 (10H)

Для режимів екрану EGA від DH до 10Н пам'ять організована зовсім по-іншому. Вона поділяється на одну, дві або чотири бітові площини, кожна з яких організована так же, як для чорно-білого режиму високого дозволу, описаного вище: коли байт даних посилається в певну адресу відеобуфера, кожний біт відповідає крапці на екрані, причому вони описують горизонтальний сегмент рядка і біт 7 відповідає самій лівій крапці. Записуються чотири такі бітові площини, відповідні однім і тим же адресом, в відеобуфері. Це відводить кожній крапці 4 біти, що дозволяє описувати 16 кольорів.

PCjr і EGA працюють з кольором зовсім по-іншому, ніж кольоровий адаптер. Вони використовують регістри палітри, що дозволяють в будь-який момент змінити колір, відповідний даному коду.

Обидві системи використовують один і той же основний набір кодів кольору, що в точності співпадає з тими, що застосовуються в текстових режимах. EGA може використати 6 біт регістру палітри, а не 4, коли до нього приєднаний покращений кольоровий графічний дисплей фірми IBM.

При цьому стають доступними 64 кольори, кодіровка для яких R'G'B'RGB. R, G і B відповідають темним кольорам, а R', G' і B' - світлим. Різноманітні комбінації створюють 64 відтінки. Як завжди, 111111 відповідає білому кольору, а 000000 - чорному. Відзначимо, що через регістри палітри для EGA завжди доступні 64 кольори незалежно від того, в якому режимі він працює. При роботі в режимі 4-кольорової графіки (як у кольорового адаптеру) активні тільки молодші 4 регістри палітри, але вони можуть містити будь-які кольори.

Функція ВН переривання 10Н встановлює як фоновий колір, так і кольори палітри, але не водночас. Для встановлення фонового кольору треба помістити в ВН 0, а після цього код кольору від 0 до 15 - в BL. Для встановлення палітри треба помістити в ВН 1, а в BL 0 або 1.

Призначення регістрів

Таблиця 8.3 – Призначення регістрів блоку синхронізації

Найменування

Порт

Індекс

Адресний (Address)

3C4

Ініціалізації (Reset)

3C5

00

Тактового режиму (Clocking mode)

3C5

01

Маски бітової площини (Map mask)

3C5

02

Вибору набору символів (Character map select)

3C5

03

Режиму використовування пам’яті (Memory mode)

3C5

04

Таблиця 8.4 – Призначення регістрів блоку керування ЕПТ

Найменування

Порт

Індекс

Адресний (Address)

3?4

Загальної довжини рядка (horisontal total)

3?5

00h

Довжини ділянки відображення в рядку (Horizontal display enable end)

3?5

01h

Початку горизонтального гасіння (Start horisontal blank)

3?5

02h

Кінця горизонтального гасіння променя (End horisontal blank)

3?5

03h

Початку горизонтального зворотного хода променя (Start horisontal retrace)

3?5

04h

Кінця горизонтального зворотного хода проміня(End horisontal retrace)

3?5

05h

Загальної кількості рядків растра в кадрі (vertical total)

3?5

06h

Переповнення (Overflow)

3?5

07h

Встановлення рядка растра (Preset row scan)

3?5

08h

Вертикального розміру символу (Max scan line)

3?5

09h

Початку курсору (Cursor start)

3?5

0Ah

Кінця курсору (Cursor end)

3?5

0Bh

Старшої складникової початкової адреси (Start address high)

3?5

0Ch

Молодшої складникової початкової адреси (Start address low)

3?5

0Dh

Старшої складникової позиції курсору (Cursor location high)

3?5

0Eh

Молодшої складникової позиції курсору (Cursor location low)

3?5

0Fh

Початку вертикального зворотного хода променя(Vertical retrace start)

3?5

10h

Старшої складникової адреси світлового пера (Light pen high)

3?5

10h

Кінця зворотного хода променя (Vertical retrace end)

3?5

11h

Молодшої складникової адреси світлового пера (Light pen low)

3?5

11h

Довжини ділянки зображення в кадрі (Vertical display end)

3?5

12h

Зміщення (Offset)

3?5

13h

Положення символа підкреслювання (Underline location)

3?5

14h

Початку вертикального гасіння проміня (Start vertical blank)

3?5

15h

Кінця вертикального гасіння проміня (End vertical blank)

3?5

16h

Керування режимом (Mode control)

3?5

17h

Порівнювання рядків (Line compare)

3?5

18h

? = B в монохромних режимах і D в кольорових

Експерименти з регістрами блоку керування ЕПТ, що формують зображення кадру, можуть призвести до поломки відеотермінала.

Таблиця 8.5 – Призначення регістрів графічного контролера

Найменування

Порт

Індекс

Регістр позиції графіки 1 (Graphics 1 Position)

3СС

-

Регістр позиції графіки 2 (Graphics 2 Position )

3СA

-

Адресний регістр графічного контролера (Graphics 1 & 2 Address)

3CE

-

Кольори (Set/Reset)

3CF

00

Дозволу кольору (Enable Set/Reset)

3CF

01

Порівнювання кольору (Color Compare)

3CF

02

Обертання даних (Data rotate)

3CF

03

Вибору площини для читання (Read Map Select)

3CF

04

Вибору режиму (Mode)

3CF

05

Багатоцелевий (Miscellaneous)

3CF

06

Регістр незалежності від значення площини при читанні (Color Don't Care)

3CF

07

Маски (Bit Mask)

3CF

08

Таблиця 8.6 – Призначення регістрів контролера атрибутів

Найменування

Порт

Індекс

Адресний регістр (Address Register)

3C0

-

Регістри палітри (Palette Registers)

3C0

00 - 0F

Регістр керування режимом (Mode Control Register)

3C0

10

Регістр керування кольором бордюра (Overscan Color Register)

3C0

11

Регістр дозволу зображення бітової площини (Color Plane Enable Register)

3C0

12

Горизонтального зсуву пік селів (Horisontal Pel Panning Register)

3C0

13

Малювання крапок

Внаслідок організації графічної інформації в відеобуфері вивід однієї крапки має на увазі зміну окремих бітів пам'яті. Режими двох, чотирьох і шістнадцяти кольорів вимагають, щоб для встановлення характеристик однієї крапки були змінені один, два і чотири біти відповідно. Для цих операцій необхідні величезні витрати процесорного часу, тому графічне програмне забезпечення, як правило, працює дуже поволі. Ретельне осмислювання часто дозволяє відразу встановити всі біти одного байта, а не звертатися до одного і того же байту 4 або 8 раз.

Функція СН переривання 10Н встановлює крапку. DX містить рядок, а CX - стовпець. Вони відраховуються від 0. Код кольору розміщується в AL. Відзначимо, що вміст AX буде зруйнований при виконанні переривання.

В той час як колір палітри розміщується в молодші біти AL, старший біт також має значення. Якщо він рівний 1, то над кольором виконується операція ВИКЛЮЧНЕ АБО з поточним кольором.

Нагадаємо, що операція ВИКЛЮЧНЕ АБО встановлює біт тільки в тому випадку, якщо з двох порівнювальних бітів встановлений тільки один. Якщо обидва порівнювальні біти рівні 1 або обидва рівні 0, то результат буде 0. Для двохкольорового режиму це означає, що така операція звертає встановлення біту. Якщо цю операцію застосувати до всіх крапок екрану, то буде звернутий весь екран. В 4 - і 16-кольоровому режимах, з іншого боку, області екрану можуть міняти свої кольори.

На низькому рівні ми маємо можливість прямого доступу до відеобуферу (відображення в пам'ять). Спочатку ви повинні обчислити зміщення крапки (а) всередині буферу і (б) всередині байта, що містить біт, стосовні даної крапки. Після цього бітові операції забезпечать відповідне встановлення.

У EGA - адаптеру графіка більш складна. З точки зору процесора режими екрану 0-7 діють так же, як відповідні режими для кольорового адаптеру або PCjr, але режими від DH до 10Н цілком інші. Організація пам'яті для цих режимів змінюється в залежності від числа кольорів і кількості пам'яті, наявної на платі дисплею.

В режимах D, E і 10Н пам'ять розбита на 4 бітові площини. Кожна площина організована таким же чином, як для чорно-білого режиму високого дозволу кольорового адаптеру, коли байт даних посилається в певну адресу відеобуфера, кожний біт відповідає горизонтальному сегменту лінії, а біт 7 - самій лівій крапці. Виводяться чотири такі бітові площини, стосовні до одних і тих же адрес в відеобуфері. Це призводить до того, що кожна крапка описується чотирма бітами (даючи 16 кольорів), причому кожний біт знаходиться в окремому байті окремої бітової площини.

Але як ви можете записати 4 різноманітних байта даних, розташованих по одній і тій же адресі? Відповідь на це питання полягає в тому, що ви не посилаєте послідовно чотири байта по цій адресі. Замість цього один з трьох режимів запису дозволяє змінити всі 4 байта на підставі одного байта даних, отриманого від процесора. Вплив даних, посланих процесором, залежить від встановлення декількох регістрів, включаючи два регістру маски, що визначають, на які біти і в яких бітових площинах будуть змінюватися біти. Для розуміння цих регістрів ми повинні спочатку розібратися з чотирма регістрами запирання (latch register). Вони містять дані для чотирьох бітових площин в тій позиції, до якої було останнє звернення. (Помітимо, що термін" бітова площина" використовується як для цілої області відеобуфера, так і для і однобайтового буферу, що тимчасово зберігається в регістрі запирання).

Коли процесор посилає дані по певній адресі, ці дані можуть змінити або повністю замінити дані регістру запирання, а згодом саме дані з регістру запирання записуються в відеобуфер. Яким чином дані процесора впливають на регістр запирання, залежить від режиму запису, а також встановлення деяких інших регістрів. При читанні адреси з відеобуфера регістри запирання заповнюються чотирма байтами з чотирьох бітових площин по даній адресі. Регістрами запирання легко маніпулювати, виконуючи з їхнім вмістом різноманітні логічні операції, що дозволяє виконувати різноманітні графічні трюки.

Регістр маски бітів і регістр маски карти діють на регістри запирання, захищаючи певні біт або бітові площини від зміни під чинністю даних, що надходять від процесора. Встановлення біту регістру маски бітів в 0 маскує цей біт в усіх чотирьох бітових площинах, роблячи відповідну крапку недосяжною для зміни. Однак оскільки обладнання працює в байтових термінах, реально "незмінюємі" біти перезаписуються в чотири бітові площини. Дані для цих бітів зберігаються в регістрах запирання, тому програма повинна бути впевнена, що поточний вміст регістрів запирання відноситься до правильної адреси. Тому перед записом в відеобуфер треба спочатку зчитувати з нього. Біти 0-3 регістру маски карти відповідають бітовим площинам 0-3. Старші 4 біти регістру не використовуються. Коли біти 0-3 рівні 0, відповідні бітові площини не міняються при операціях запису. Дані, що посилаються в відеобуфер можуть бути модифіковані і логічно оброблені разом з даними, що зберігаються в регістрах запирання з допомогою регістру обертання даних біти 0-2 регістру обертання визначають число розрядів, на які припадає циклічне зміщення даних процесора ліворуч при запису даних в відеобуфер. Для запису даних без зміщення цей біт повинен бути встановлений в 0. При запису задають логічну функцію даних процесора з даними регістрів запирання.

Значення бітів:

00-дані не міняються

01-логічне "І"

10-логічне "або"

11 що - виключне "або"

Операція зміщення виконується раніше логічної операції. Ця властивість використовується по різному в різноманітних режимах запису. Три режиму запису і два режиму читання встановлюються регістром встановлення режиму. Режим запису встановлюється в бітах 0 і 1, як число від 0 до 2. біт 2 повинен бути рівним 0, також як і біт 4-7. біт 3 встановлює один з двох режимів читання з відеобуфера. Цей біт може бути 0 або 1. BIOS EGA встановлює режим запису в 00, режим читання в 0.

Режим запису 0

В найпростішому випадку режим запису 0 копіює дані процесора в кожну з чотирьох бітових площин. Нехай, наприклад, по певній адресі відеобуфера послано 11111111В і розв'язані всі біти і всі бітові площини (тобто ніщо не масковано описаними вище регістрами масок). Тоді кожний біт в усіх чотирьох площинах буде встановлений в 1, так що ланцюжок бітів для кожної з відповідних крапок буде 1111В. Це означає, що вісім крапок будуть виведені в кольорі 15, що спочатку відповідає білому кольору, хоча регістри палітри дозволяють, щоб насправді був будь-який з допустимих кольорів.

Тепер розглянемо ту же ситуацію, коли посилається значення 00001000В. Ланцюжок бітів для крапки 3 буде 1111, а для інших 0000, що відповідає чорному (спочатку). Тому в даному випадку тільки крапка 3 з'явиться на екрані, інші 7 крапок будуть вимкнуті.

Якщо ви відправите код палітри бажаного кольору в регістр маски карти, то регістр буде маскувати певні бітові площини таким чином, що буде відтворений необхідний колір.

Наведене вище обговорення стосувалося одночасного виведення вісьмох крапок. Ну а як вивести меншу кількість крапок? В цьому випадку, звичайно, необхідно зберегти існуючі дані для деяких крапок, а щоб це було можливо, поточний вміст даної адреси зберігається в регістрах запирання. Після цього використовується регістр маски бітів для маскування тих крапок, що не повинні змінюватися. Якщо біт цього регістру скинутий в 0, то дані, одержувані від процесора для цього біту, ігноруються і замість них використовуються дані, що зберігаються в регістрах запирання. Заповнення регістрів запирання змінюється при ненульовому значенні регістру дозволу кольору (регістр 01H блоку графічного адаптеру), розряди 0-3 якого дозволяють заповнення байта вибраних бітових площин значеннями з відповідних розрядів регістру кольору (регістр 00H блоку графічного адаптеру). В цьому випадку значення даних процесора (маски карти ігноруються).

Режим запису 1

Режим запису 1 визначений для спеціальних додатків. В цьому режимі поточний вміст регістру запирання записується по означеній адресі. Нагадуємо, що регістри запирання заповнюються операцією читання. Цей режим дуже корисний для швидкого переносу даних при операціях зміщення екрану. Регістр маски бітів і регістр маски карти не впливають на цю операцію. Не мають значення також дані, що посилає процесор - вміст регістрів запирання записується в пам'ять без змін.

Режим запису 2

Режим запису 2 представляє альтернативний засіб встановлення окремих крапок. Процесор посилає дані, у яких мають значення тільки 4 молодших біти, розглядувані як колір (індекс регістру палітри). Можна сказати, що цей ланцюжок бітів вставляється поперек площин. Ланцюжок дублюється на всі вісім крапок, стосовних до даної адреси, до тих пор, доки регістр маски бітів не застерігає певні крапки від зміни. Регістр маски карти активний, як і в режимі запису 0. Звичайно, процесор повинен послати повний байт, але тільки молодші 4 біти істотні.

Режим читання 0

Процесор здійснює читання даних (8 крапок) з регістру запирання тієї площини, що дозволена регістром вибору площини для читання (розряди 0-2 регістру 04H блоку графічного контролера). Для читання кольорів (кодів регістру палітри) всіх 4 бітових площин необхідно послідовно дозволити читання і прочитати всі площини по одній адресі.

Режим читання 1

В результаті виконання операції читання в 1 будуть встановлені тільки ті біти в байті, для яких колір співпадає з кольором, заданим в бітах 0-3 регістру порівняння кольору (регістр 02H блоку графічного адаптеру).

Програмування регістрів

Кожна з мікросхем адаптеру володіє адресним регістром і декількома регістрами даних. Адресний регістр використовується в якості покажчика на той або інший регістр даних. Адресний регістр є регістром типу "тільки запис" в який за допомогою команди OUT може бути поміщений індекс вибраного регістру даних.

Регістри даних кожної мікросхеми адаптеру доступні через відповідний порт введення/виведення. Доступ до різноманітних регістрів даних здійснюється шляхом попереднього занесення в адресний регістр індексу необхідного регістру даних з наступним видаванням команди OUT з боку процесора для занесення в нього необхідного значення. Відміну мають регістри контролера атрибутів, де адресний регістр і регістр даних мають один порт з адресою 3C0H.

Всередині контролера адресація організована таким чином, що кожний раз після запису в порт 3COH, виконується переключення: адресний регістр -> регістр даних, відповідний значенню адресного регістру і навпаки. Для ініціалізації процесу переключення адресний регістр - регістр даних (спочатку доступ до адресному регістру, а потім до регістру даних і т. д.) необхідно виконати операцію читання з порту з адресою 3BAH або 3DAH. Після виконання операції читання, перший доступ до порту 3C0H буде зверненням до адресного регістра контролера атрибутів. Після завантаження адресного регістру, наступна команда виведення в порт 3C0H призведе до записів необхідного значення в відповідний регістр даних контролера атрибутів. Виконання цієї команди знову робить адресний регістр доступним для запису і процес може бути продовжений.

Після запису даних в регістри контролера атрибутів необхідно встановити 5 біт адресного регістру контролера в 1 (дозвіл виведення), тобто послати в порт 3C0H значення 20H.

EGA підтримує стандартні графічні функції BIOS. Можна вивести крапку з допомогою функції CH переривання 10H, так же як для кольорового дисплею або PCjr. При вході DX повинен містити номер рядка, а CX номер стовпця, і те і інше відраховується від 0. Код кольору розміщується в AL. Вміст AX змінюється при виконанні переривання.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]