Висновок на екран засобами bios

Розглянемо тепер кошти виведення на екран, реалізовані драйвером BIOS, програмне звернення до якого здійснювала-вляется за допомогою переривання Int 10h. При роботі в тексто-вом режимі зазвичай використовуються наступні функції драйві-ра:

02h - встановити позицію курсора;

03h - отримати позицію курсора;

06h - форматувати або прокрутити вгору вікно;

07h - форматувати або прокрутити вниз вікно;

08h - прочитати символ і атрибут в позиції курсора;

09h - вивести символ і атрибут в позицію курсора;

0Ah - вивести символ в позицію курсора;

0Eh - вивести символ в режимі телетайпа;

10h, подфункция 03h - переключити біт мерехтіння / яскравість;

13h - вивести рядок в режимі телетайпа.

Функція 03h дозволяє отримати і зберегти поточний по-ложення курсора. Це дає можливість перейти тимчасово в інше місце екрану, сформувати там зображення, а потім повернутися на старе місце.

За допомогою функцій 06h і 07h в заданому місці екрану дисплея створюються кольорові прямокутні вікна заданого раз-міра. Якщо в створені раніше вікна виведений будь-якої текст то за допомогою цих же функцій можна прокручувати текст вгору або вниз. При цьому текст, що йде за край вікна, про-падає, а з-під протилежного краю з'являються порожні рядки з заданими атрибутами кольору. Для заповнення появля-ющихся рядків текстом слід використовувати відповідні функ-ції DOS або BIOS, причому контроль місця розташування, довжини і кольору рядків покладається на програміста. Драйвер тільки прокручує задану прямокутну область екрана (разом з текстом в ній).

Функції 09h, 0Ah, 0Eh і 13h служать для виведення на екран окремих символів і символьних рядків (в циклі), функції 09h і 0Ah не виконують фільтрації керуючих символів, тому з їх допомогою можна виводити всі символи кодової сторінки. Передбачено висновок одного і того ж символу за-дане число раз, що можна використовувати при створенні рамок і інших орнаментів. Висновок символу не переміщує курсор тому кожен раз перед застосуванням функцій 09h або 0Ah слід позиціонувати курсор за допомогою функції 02h. Раз-відмінність функцій 09h і 0Ah полягає в тому, що перша поз-воляет вивести символ з будь-яким атрибутом, а друга использу-ет колишній атрибут тієї позиції, куди виводиться символ.

Функція 0Eh фільтрує керуючі коди 07h (звуковий сигнал), 08h (повернення на крок), 10h (переклад рядка) і 13h (повернення каретки), виконуючи відповідні їм дії. Курсор переміщається після виведення кожного символу, що дає можливість виводити цілі рядки. Однак атрибут символу встановити не можна, виведений символ набуває колишній атрибут тієї позиції, куди він виводиться. При необхідності виведення символу з новим атрибутом слід спочатку вивести в задану позицію символ пробілу з необхідним атрибутом (функцією 09h), а потім туди ж послати символ за допомогою функції 0Eh.

Важливою властивістю функції 0Eh є автоматичний перехід на наступний рядок після завершення попередньої, а також прокрутка екрану вгору на один рядок після заповнення-ня найнижчої рядки.

Функція 13h призначена для виведення рядків із зазначенням атрибутів як кожного символу окремо, так і всього рядка. Функція може виконуватися в чотирьох варіантах в залежності від коду режиму, зазначених вище в регістрі AL. У режимах 0 і 1 атрибут символів вказується відразу для всього рядка в регістрі BL, причому в режимі 0 курсор не зміщувати в процесі виведення, а в режимі 1 - зміщується на довжину рядка. В режимах 2 і 3 атрибути символів включаються в виведену рядок, в якій, таким чином, чергуються коди атрибутів і коди символів, що ускладнює формат рядка, але дозволяє встановлювати атрибути для кожного символу незави-сімо. Режим 2 відрізняється від режиму 3 тим, що в першому випадку курсор не зміщувати, а в другому зміщується на довжину рядка.

Функція 13h виводить більше знаків, аніж так як коди 07h, 08h, 0Ah і 0Dh розглядаються нею, як керуючі.

При виведенні на екран засобами драйвера BIOS необхідно мати на увазі, що введення з клавіатури / C не призводить до завершення програми. Слід побоюватися нескінченних циклів виведення на екран - вихід з них можливий тільки шляхом пере-завантаження комп'ютера.

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

Схожі статті