Глава 4. Вывод на терминал.

Раздел 2. Управление курсором.

4.2.4 Изменение формы курсора.

Kурсор может меняться по толщине от тонкой линии до максимального размера, отводимого под символ. Он строится из коротких горизонтальных отрезков, верхний из которых называется "начальной строкой" курсора, а нижний - "конечной строкой". Для монохромного дисплея под каждый символ отводится 14 строк, пронумерованных от 0 до 13, начиная сверху. Промежутки между символами обеспечиваются двумя верхними строками и тремя нижними. Большинство символов распологаются в строках 2-10, хотя хвостики некоторых символов достигают линий 12 и 13, в то время как подчеркивание занимает одну двенадцатую строку.

Hа 200-строчном цветном дисплее для каждого символа отводится только 8 строк, а символ рисуется в верхних семи строках. Эти 8 строк пронумерованы от 0 до 7, начиная сверху, и нормальный курсор формируется одной строкой 7. (Отметим, что на цветном дисплее нет подчеркивания, поскольку использование для подчеркивания строки 7 привело бы к тому, что символы сливались бы с расположенными под ними.) Цветной дисплей высокого разрешения использует 14-строчный монохромный вариант, когда он работает в режиме высокого разрешения, а когда он работает в одном из цветных графических режимов, то он использует 8-строчный режим.

Kурсор может быть сформирован любой комбинацией прилегающих отрезков. Для монохромного дисплея он занимает все отведенное под символ место, когда "начальная строка" равна 0, а "конечная строка" равна 13 (для графического дисплея надо использовать значение "конечной строки" равное 7). Если значения "начальной" и "конечной" строки совпадают, то возникает однострочный курсор. Если номер "конечной строки" меньше чем "начальной" то возникает курсор, состоящий из двух частей, так как происходит перенос в верхние строки. Hапример, если "начальная строка" равна 12, а "конечная" - 1, то сначала заполняется строка 12, затем 13, затем 0 и, наконец, 1. Kурсор при этом принимает форму двух параллельных линий, указывающих верхнюю и нижнюю границы ряда, который он занимает.

BIOS хранит 2-байтную переменную по адресу 0040:0060, которая содержит текущие значения "начальной" и "конечной" строк. Первый байт содержит значение "конечной строки", а второй - "начальной".

Средний уровень.

Функция 1 прерывания BIOS 10H устанавливает "начальную" и "конечную" строки курсора. В CH должна быть указана "начальная", а в CL - "конечная" строка.
;---установка "начальной" и "конечной" строк курсора
MOV AH,1 ;номер функции
MOV CH,0 ;начать курсор в верхней строке
MOV CL,7 ;окончить курсор в восьмой строке
INT 10H ;

Hизкий уровень.

Регистры 10 и 11 контроллера дисплея 6845 содержат значения "начальной" и "конечной" строки, соответственно. Доступ к обоим регистрам осуществляется через порт 3B5H для монохромного адаптора и 3D5H - для цветного алаптора и PCjr. Предварительно надо послать номер требуемого регистра в адресный регистр, имеющий адрес порта 3B4H (см. {4.1.1}). Значения занимают младший конец каждого регистра. Однако регистр "начальной" строки (#10) битами 5 и 6 индицирует также должен ли выводиться курсор. Поскольку курсор выводится, когда оба этих бита сброшены в 0, то просто поместив в регистр номер "начальной" строки мы установим эти биты в 0. Остальные биты этого регистра не используются.
;---установка "начальной" строки
MOV DX,3B4H ;доступ к адресному регистру 6845
MOV AL,10 ;выбор регистра 6845
OUT DX,AL ;посылка запроса
MOV AL,0 ;номер "начальной строки" 0
INC DX ;переходим к управляющему регистру
OUT DX,AL ;посылаем номер "начальной строки"
;---установка "конечной строки"
MOV AL,11 ;выбираем регистр 11
DEC DX ;возвращаемся к адресному регистру
OUT DX,AL ;посылаем запрос
MOV AL,7 ;номер "конечной строки" 7
INC DX ;переходим к управляющему регистру
OUT DX,AL ;посылаем номер "конечной строки"


<~-4.2.3 Включение и выключение курсора.
Содержание
4.2.5 Чтение/сохранение/восстановление позиции курсора.-~>

Сайт управляется системой uCoz