< Назад Далее > |
Из рассмотрения примеров статьи 7 видно, что возможности DOS по управлению экраном весьма скудны. С помощью функции 09h можно выводить на экран символьные строки, включая в них управляющие символы и символы псевдографики. Позиционирование курсора, как и очистку экрана, приходится выполнять с помощью пробелов. В DOS нет никаких функций, с помощью которых можно было бы программно установить курсор в заданное место экрана; нельзя также изменить цвет выводимых символов (это-то при цветном мониторе!).
Включение в систему устанавливаемого драйвера терминала (файл ANSI.SYS) дает пользователю дополнительные возможности управления экраном и клавиатурой. Если в символьной строке, выводимой на экран, встречается код клавиши Esc (27, или 1Bh), за которым следует символ [, то ANSI-драйвер перехватывает последующие символы и интерпретирует их, как команды управления экраном или клавиатурой. С помощью Esc-последовательностей можно очищать экран, перемещать по нему курсор, выбирать цвета фона и символа, изменять видеорежим, а также переопределять клавиши клавиатуры.
В дальнейших примерах будут использоваться такие Esc-последовательности:
Esc[2J — очистка экрана и перемещение курсора в левый верхний угол;
Esc[строка;позицияH — установка позиции курсора. Параметр строка обозначает Y-координату курсора в пределах 1...25, параметр позиция — X-координату в пределах 1...80 (для видеорежима 80 х 25 символов);
Esc[код_1;код_2;код_3m — выбор атрибутов символов. Параметры код_1, код_2 и код_3 могут принимать значения:
0 — нормальное изображение (белые символы на черном поле);
1 — выделение яркостью;
5 — выделение мерцанием;
7 — инверсное изображение (черные символы на белом поле);
30 — черные символы; 31 — красные символы; 32 — зеленые символы; 33 — коричневые символы; 34 — синие символы; 35 — фиолетовые символы; 36 — бирюзовые символы; 37 — белые символы; |
40 — черный фон; 41 — красный фон; 42 — зеленый фон; 43 — коричневый фон; 44 — синий фон; 45 — фиолетовый фон; 46 — бирюзовый фон; 47 — белый фон; |
Помимо перечисленных, имеются Esc-последовательности, служащие для выбора видеорежима, переопределения клавиш клавиатуры и другие.
Модифицируем текст выводимой строки программы 7.3, включив в него Esc-последовательности управления экраном.
Пример 8.1. Управление экраном с помощью Esc-последовательностей
message db 10 dup (7) ; Звуковой сигнал db 27, '[2J', 27, '[31;5m' ; Очистка экрана db 27, '[12;35H', 201, 9 dup (205), 187 ; Позиционирование и символы db 27, '[13;35H', 186, 'Внимание!', 186 ; Позиционирование и символы db 27, '[14;35H', 200, 9 dup (205), 188 ; Позиционирование и символы db 27, '[0m', 27, '[25;1H$' ; Отмена цвета и позиционирование