Зміст буферу в текстовому режимі 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Зміст буферу в текстовому режимі



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

При виводі тексту різноманітні відеосистеми працюють однаково. Для екрану відводиться 4000 байт, так що на кожну з 2000 позицій екрану (25 рядків x 80 символів) потрібно 2 байта. Перший байт містить код ASCII символу. Апаратура дисплею перетворює номер коду ASCII в зв'язаний з ним символ і посилає його зображення на екран. Другій байт (байт атрибутів) містить інформацію про те, як повинен бути виведений даний символ. Для монохромного дисплею він встановлює чи буде даний символ підкресленим, виділеним яскравістю, інверсним, або застосовується комбінація цих атрибутів.

В кольорових системах байт атрибутів встановлює основний і фоновий кольори символу, а також ознаку його блимання.

При запису даних прямо в буфер монітору значно підвищується швидкість виводу на екран.

 

Відеоатрибути символів

Адаптери MDA і CGA.

Кольоровий адаптер може виводити в кольорі як символ, так і всю область, відведену даному символу (фоновий колір). Монохромний адаптер обмежений тільки чорним і білим кольором, але він може генерувати підкреслені символи, чого не може робити кольоровий адаптер. На рис. 7.3 наведений формат байта відеоатрибута, що в адаптері CGA безпосередньо задає кольори символу і фону.

 

Рис.7.3 – Байт відеоатрибута

 

R - входження червоного кольору (0-не входить, 1-входить);

G - входження зеленого кольору (0-не входить, 1-входить);

B - входження синього кольору (0-не входить, 1-входить);

I - інтенсивність (0-символ неяскравий, 1-символ яскравий);

М - блимання (0=символ не блимає, 1-символ блимає).

*- можливий режим, коли цей біт буде визначати не блимання символу, а інтенсивність кольору фону.

Як колір символу, так і колір фону визначаються як сума трьох основних кольорів – червоного, зеленого і синього. Всі можливі кольори наведені в таблиці 7.1. При чому колір символу може приймати всі 16 значень, у той час як колір фону лише перші 8.

Таблиця 7.1 – Значення кодів можливих кольорів

І R G B Колір
        чорний
        синій
        зелений
        блакитний (циан)
        червоний
        рожевий (магента)
        коричневий
        сірий
        темно-сірий
        яскраво-синій
        світло-зелений
        світло-блакитний
        світло-червоний
        світло-рожевий
        жовтий
        білий

 

Монохромні символи використовують байт атрибутів трохи по-іншому. Як і з атрибутами кольору, біти 0-2 встановлюють колір символу, а біти 4-6 – фону. Ці кольори можуть бути тільки білими і/або чорними. Нормальний режим - білий на чорному, коли біти 0-2 встановлені в 111, а біти 4-6 встановлені в 000. Негативне зображення створюється зворотними значеннями бітів. Символи виводяться з підвищеною яскравістю, коли біт 3 встановлений в 1. В усіх випадках встановлення в 1 біта 7 дає блимання символів. Можливі тільки 10 варіантів зображення монохромних символів. Вони наведені в таблиці 7.2.

Адаптер EGA.

В 16-кольорових текстових режимах в адаптері EGA діє такий же формат атрибутного байта, як в адаптері CGA. Однак в адаптері EGA введені додаткові перетворення 4-бітних значень кольорів переднього плану і фону. По-перше, кожне 4-бітне значення маскується молодшими бітами регістру дозволу кольорової площини (12h) в атрибутному контролері і, по-друге, отримане після цього 4-бітне значення вибирає один з 16 регістрів палітри (ця операція називається також індексуванням).

Читаєме з вибраного регістру палітри 6-бітне значення rgbRGB (де r, g, b - слабкі інтенсивності - 1/3 від max, RGB - нормальної інтенсивності - 2/3 від max) визначає остаточний колір пікселя. Таким чином, палітра в адаптері EGA складається з 64 кольорів, але водночас на екрані можна спостерігати тільки 16 з них. Коли же адаптер працює з моніторами, розрахованими на 200 рядків розвертки, в кожному регістрі палітри біти 2, 1 і 0 керують сигналами кольорів, а біт 4 визначає інтенсивність, як в адаптері CGA.

 

 

Таблиця 7.2 – Значення зображень монохромних символів

Послідовність бітів Значення атрибута
  нормальний
  інтенсивний
  нормальний-підкреслений
  інтенсивний підкреслений
  інверсний
  нормальний блимаючий
  інтенсивний блимаючий
  Нормальний блимаючий підкреслений
  яскравий блимаючий підкреслений
  яскравий інверсний

 

Адаптер MCGA.

В адаптері MCGA для перетворення атрибутів в сигнали кольорів передвизначені форматер і цифро-аналоговий перетворювач (ЦАП). Вентильна матриця форматера дешифрує атрибути і утворює 8-бітні вихідні коди, що передаються в ЦАП. Мікросхема ЦАП формує аналогові сигнали червоного, зеленого і синього кольорів, що подаються в монітор, використовуючи 8-бітний вхід для вибору одного з 256 внутрішніх 18-бітних регістрів кольору. Кожний з них має три поля по 6 бітів, відповідних кольорам RGB. Ці поля вибраного регістру ЦАП окремо перетворюються в аналогові вихідні сигнали для монітору. При цьому найбільше значення 3Fh в кожному полі відповідає сигналу з найбільшою інтенсивністю.

В текстових режимах чотири молодших біти виходу форматера утворюються з атрибутних байтів, а чотири старших біти завжди нульові. Отже, тут для генерування вихідних сигналів кольорів RGB привертаються перші 16 регістрів кольору ЦАП, а інші 240 регістрів доступні тільки в 256-кольоровому режимі 320x200 (режим 13h). При підключенні до адаптеру MCGA кольорового монітору процедура BIOS завдання режиму ініціалізує перші 16 регістрів кольору ЦАП на утворення тих же кольорів, що і в адаптері CGA.

Регістр маски ЦАП (порт 3C6h) здійснює маскування 8-бітних значень, що передаються в ЦАП. Звичайно процедура ініціалізації BIOS завантажує в регістр маски значення FFh, забезпечуючи доступ до 256 регістрів кольори ЦАП. Програмістам рекомендується не змінювати вміст регістру маски ЦАП.

На відміну від адаптеру EGA адаптер MCGA при підключенні до нього монохромного монітору не емулює атрибути адаптеру MDA. Замість цього в 16 регістрів ЦАП завантажуються значення за замовчуванням, що утворюють чотири групи по чотири рівня (відтінки) сірого.

Кожна група забезпечує формування більш яскравих символів, ніж попередня, а всередині кожної групи інтенсивність зростає в відповідності зі значенням атрибуту. Отже, значення атрибутів 00h - 03h, 04h - 07h, 08h - 0Bh і 0Ch - 0Fh утворять діапазони все більш яскравих рівнів сірого.

Адаптер VGA.

В адаптері VGA емулюється дешифрація атрибутів адаптеру EGA, але поряд з 16 регістрами палітри є ЦАП зі своїми 256 регістрами, аналогічний ЦАП в адаптері MCGA. Тому вміст вибраного регістру палітри подається як індекс в ЦАП і регістр кольору, що вибирається, визначає остаточний колір пікселя.

В залежності від стану біту 7 в регістрі керування режимом атрибутного контролера реалізуються два засоби вибору регістру ЦАП. Коли цей біт знаходиться в стані 0, атрибутний контролер об’єднує 6-бітне значення з регістру палітри з бітами 3 і 2 свого регістру вибору кольору (номер регістру 14h). 8-бітное значення, яке отримується, подається в ЦАП і вибирає один з його регістрів кольору.

Таким чином, в цьому випадку 6-бітний код з регістру палітри використовується для вибору регістру в одній з чотирьох груп по 64 регістру кольору ЦАП в кожній, а біт 3 і 2 регістру вибору кольору визначають конкретну групу. Змінюючи вміст бітів 3 і 2 регістру вибору кольору, можна практично миттєво змінити кольори всіх символів на екрані.

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

Регістри відеоконтролера

В усіх відеосистемах контролер відеотермінала виконаний на базі мікросхеми Motorola 6845 (EGA використовує заказану мікросхему, що основана на 6845).

Мікросхема 6845 має 18 керуючих регістрів, що пронумеровані від 0 до 17. Перші 10 регістрів фіксують горизонтальні і вертикальні параметри дисплею. Ці регістри автоматично встановлюються BIOS при зміні режиму екрану. Не треба експериментувати з цими регістрами, оскільки можна зіпсувати термінал. Регістри мають розмір 8 біт, але деякі зв'язані в пари, щоб зберігати 16-бітові величини. Пари регістрів 10-11 і 14-15 встановлюють форму і місцеположення курсору. Пара 12-13 керує сторінками дисплею. Пара 16-17 визначає позицію світлового пера. Більшість регістрів доступні тільки для запису; регістр адреси курсору можна і читати, і записувати, а регістр світлового пера передвизначений тільки для читання.

EGA має 6 додаткових регістрів, з них найбільш цікавий регістр 20. Він визначає, що лінія сканування в рядку символу використовується для підкреслювання.

Доступ до всіх 18 регістрів здійснюється через один і той же порт, адреса якого для монохромного адаптеру – 3B5H, для кольорового адаптеру і PCjr – 3D5H. EGA використовує один з цих двох адрес в залежності від того, приєднаний до нього кольоровий або монохромний монітор. Для запису в регістр треба спочатку в регістр адреси, розташований в порту 3B4H (3D4H для кольорового), послати номер необхідного регістру. Тоді наступний байт, посланий в порт з адресою 3B5H, буде записаний в цей регістр.

У CGA і MDA є ще три регістри, важливі для програмістів. Вони мають адреси 3B8H, 3B9H і 3BАH для монохромного і 3D8H, 3D9H і 3DAH - для кольорового адаптеру. Перший встановлює режим екрану, другий зв'язаний в основному з встановленням кольорів екрану, а третій повідомляє корисну інформацію про статус дисплею.

Кольорова палітра зберігається в 16 регістрах палітри з номерами від 10H до 1FH. EGA розподіляє ці функції між мікросхемою контролера атрибутів (адреса порту 3C0H) і двома мікросхемами контролера графіки (адреси порту 3CCH-3CFH). Контролер атрибутів містить 16 регістрів палітри EGA, що нумеруються від 00 до 0FH. Ці регістри можуть містити 6-бітові коди кольорів, коли EGA зв'язаний з покращеним кольоровим дисплеєм, тому можуть бути використані будь-які 16 кольорів з набору 64. Можливі режими дисплеїв наведені в таблиці 7.3.

Таблиця 7.3 – Значення можливих режимів дисплею

Значення Режим
  40*25 (320*200) В&W алфавітно-цифровий кольоровий, PCjr, EGA
  40*25 (320*200) кольоровий алфавітно-цифровий кольоровий, PCjr, EGA
  80*25 (640*200) B&W алфавітно-цифровий кольоровий, PCjr, EGA
  80*25 (640*200) кольоровий алфавітно-цифровий кольоровий, PCjr, EGA
  320*200 4-кольорова графіка кольоровий, PCjr, EGA
  320*200 B&W графіка кольоровий, PCjr, EGA
  640*200 B&W графіка кольоровий, PCjr, EGA
  80*25 (720*350) B&W алфавітно-цифровий монохромний, EGA
  160*200 16-кольорова графіка PCjr
  320*200 16-кольорова графіка PCjr
А 640*2004 кольорова графіка PCjr
В зарезервований для EGA
С зарезервований для EGA
D 320*200 16-кольорова графіка EGA
E 640*200 16-кольорова графіка EGA
F 640*350 4-кольорова графіка на монохромном EGA
  640*350 4 - або 16-кольорова графіка EGA

 

Функція 0 переривання 10Н встановлює режим дисплею. В AL повинен знаходитися номер режиму згідно табл. 6.3.

 

Завдання до лабораторної роботи

 

Завдання: Встановити текстовий (80*25) режим роботи дисплею. В відповідності з індивідуальним завданням вивести на екран слова з необхідними відеоатрибутами.

 

Особливості програмування:

На мові Turbo-Pascal.

При використанні програмного переривання необхідно:

– підключити модуль Dos, в якому описані процедура Intr і тип змінної Registers;

– проголосити змінну цього типу, наприклад, reg: Registers;

– до регістрів мікропроцесора звертатися, як reg. al;

– процедуру переривання 10H викликати наступним чином: Intr ($10, reg).

Буфер відеоконтролера в текстовому режимі можна представити в вигляді масиву: buff: array [0.. 3999] of byte absolute $B800: $0000.

Тоді для виводу на екран символу в i-ий рядок і в j-й стовпець необхідно за адресою buff [i*160+j*2]записати ASCII код символу, а за наступною – байт відеоатрибута. Якщо слова задані в вигляді рядка символів s типу string, то для визначення ASCII коду k-й літери рядка можна скористатися виразом ord (s [k]).

На мові Turbo-C.

При використанні програмного переривання необхідно:

– підключити бібліотеку dos, в якій описана процедура int86 і тип REGS директивою #include <dos. h>;

– проголосити REGS оператором union REGS in, out, де in – ім'я структури вхідних регістрів, out – ім'я структури вихідних регістрів;

– до 8-разрядних регістрів звертатись, як in. h.al або out. h.ah, до 16-разрядних регістрів адресуються як in. x. ax або out. x. Ax;

– процедуру переривання 10H викликати слідуючим чином: int86 (0x10, &in, &out).

Звернення до буферу відеоконтролера в текстовому режимі здійснюється аналогічно зверненню до осередків ОЗП і ПЗП з допомогою дальніх покажчиків, проголошених char far uk. Тоді для занесення початкової адреси відеобуфера необхідно записати: uk= (char far) 0xB8000000. А для виводу на екран символу в i-й рядку і в j-м стовпці записати: (uk+i*160+j*2) =kod; (uk+i*160+j*2+1) =attr, де kod і attr змінні типу char, що описують ASCII код і атрибут символу відповідно.

 

Варіанти завдань:

1. Перші два слова червоним кольором на білому фоні; третє слово синім високої інтенсивності; четверте слово зелене блимаюче на червоному.

2. Перші три слова синім кольором на червоному фоні; друге слово високої інтенсивності.

3. Друге слово магента на чорному фоні; п'яте слово блимає; сьоме слово білим низької інтенсивності.

4. Перші три слова синім на білому фоні; четверте слово червоним високої інтенсивності; шосте слово зеленим блимаючим.

5. Сьоме слово білим чорному фоні; п'яте слово червоним кольором високої інтенсивності; перші три слова синім кольором блимають.

6. Два слова кольору ціан на червоному фоні; третє слово блимає; перше слово коричневим високої інтенсивності.

7. Перші два слова синім високої інтенсивності; третє слово блимає; четверте слово зелене на червоному фоні.

8. Перше слово чорним на білому фоні; четверте слово червоним на зеленому фоні блимає; шосте слово коричневим високої інтенсивності.

9. Друге слово рожеве високої інтенсивності; третє слово ціан на зеленому фоні; п'яте слово блимає.

10. Парні слова блакитним по рожевому; непарні - червоним по чорному; останнє п'яте слово блимає.

 

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

 

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

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

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

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

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

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

ЛАБОРАТОРНА РОБОТА №8



Поделиться:


Последнее изменение этой страницы: 2016-06-23; просмотров: 262; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.19.56.45 (0.033 с.)