Некоторые особенности возникают при использовании монохромных мониторов (режим Mono). Они способны отображать лишь три градации яркости: «черный», «белый» и «ярко-белый». Название градаций яркости взято в кавычки потому, что реально цвет может быть серым, зеленым или красным в зависимости от монитора. Текст может быть инверсным или подчеркнутым. Все эти атрибуты по-прежнему задаются в переменной TextAttr, но их кодировка уже иная:
- 325 -
Номер бита | 7 | 6 5 4 | 3 | 2 1 | 0 |
Что определяет | Мерцание 1 — да 0 — нет | Цвет фона/ инверсия | Яркость 1 — да 0 — нет | Цвет символа | Подчеркивание 1 — да 0 – нет |
Строго говоря, возможны лишь определенные значения атрибута:
0 (00000000) – черные символы на черном фоне;
1 (00000001) – подчеркнутые неяркие символы, черный фон;
7 (00000111) – неяркие символы на черном фоне;
9 (00001001) – подчеркнутые яркие символы, черный фон;
15 (00001111) – яркие символы на черном фоне;
112 (01110000) – инверсные цвета (черный на светлом);
127 (01111111) – инверсные цвета (яркие на светлом).
Добавление 128 к этим значениям заставит символы (но не фон!) мерцать.
Прочие комбинации битов дадут те же яркостные сочетания, хотя правила взаимодействия битов здесь далеко не прозрачные. Бит мерцания влияет только на мигание символов. Подчеркивание (бит 0) работает только, когда в битах 6, 5, 4, 2 и 1 стоят нули. В третьем бите может быть единица, добавляющая яркость подчеркнутым символам. Далее не легче: если в битах фона 6, 5, 4 есть хоть одна единица, а в битах 0, 1, 2 — нули, то будет инверсный цвет: черный по белому; если же в биты 0, 1, 2 попадет хоть одна единица, то цвета сольются: будет неяркий белый по белому. И, наконец, если в битах фона что-либо есть, бит 3 (яркость) равен единице и в битах цветов символов 0, 1, 2 есть хотя бы одна единица, то будет инверсное изображение — ярко-белое по белому.
15.4. Процедуры и функции модуля CRT
Реализованные в модуле процедуры и функции сведены в табл. 15.5.
Таблица 15.5
Процедуры и функции | Назначение |
Работа с экраном в целом | |
Window(X1, Y1, X2, Y2 : Byte) | Задание текущего окна на экране |
- 326 -
Процедуры и функции | Назначение |
ClrScr | Очистка текущего окна на экране |
TextMode(M: Word) | Установка текстового режима |
Позиционирование курсора | |
GotoXY(X, Y:Byte) | Установка курсора в столбец X, строку Y |
WhereX : Byte | Выдача номера текущего столбца |
WhereY : Byte | Выдача номера текущей строки |
Работа со строками | |
ClrEOL | Стирание всех символов в строке, начиная от текущего и до конца строки |
InsLine | Вставка пустой строки на место текущей |
DelLine | Удаление текущей строки |
Настройка цвета | |
TextColor(C:Byte) | Выбор цвета символов на экране |
TextBlackGround(C:Byte) | Выбор цвета фона под символами |
HighVideo | Включение яркости цвета символов |
LowVideo | Выключение яркости цвета символов |
NormVideo | Восстановление цветового режима |
Подача звуковых сигналов | |
Sound(Hz:Word) | Включение звука с частотой тона Hz в герцах |
NoSound | Выключение звука |
Использование встроенного таймера | |
Delay (ms:Word) | Задержка процесса (пауза) в ms миллисекунд |
Опрос клавиатуры | |
KeyPressed: Boolean | Логическая функция для анализа нажатия клавиши |
ReadKey : Char | Функция, возвращающая символ нажатой клавиши |
Переназначение стандартных файлов | |
AssignCRT(VAR f : Text) | Связь текстового файла f с устройством CRT |
- 327 -
Далее будут рассмотрены более подробно все функции и процедуры из табл. 15.5.
15.4.1. Работа с экраном в целом
15.4.1.1. Процедура Window( X1, Y1, X2, Y2 : Byte). Эта процедуpa устанавливает текущее текстовое окно на экране согласно схеме на рис. 15.6.
Рис. 15.6