Справочник программиста на персональном компьютере фирмы IBM. Вывод на терминал - Включение и выключение курсора
ОГЛАВЛЕНИЕ
4.2.3 Включение и выключение курсора.
Курсор генерируется микросхемой 6845. Он функционирует совер-
шенно независимо от видеопамяти. Это значит, что при прямой адре-
сации в память дисплея [4.3.1] программное обеспечение должно
координировать перемещения курсора с вставкой нового символа в
буфер. Отметим, что микросхема 6845 не может ни создавать немер-
цающий курсор, ни изменить частоту его мерцания. В [4.2.6] пока-
зано как сконструировать другие "искусственные" типы курсора.
Высокий уровень.
Интерпретатор Бейсика автоматически выключает курсор при за-
пуске программы. Курсор появляется, когда используется оператор
INPUT, но не в других случаях. Если Вашей программе необходим
курсор, скажем для процедуры INKEY$, то он должен быть включен
установкой третьего параметра оператора LOCATE в 1 (0 снова вык-
лючит его). Напоминаем, что первые два параметра оператора LOCATE
устанавливают строку и столбец, в которых должен выводиться кур-
сор.
100 LOCATE 15,40,1 ;включить курсор, его позиция 15,40
или
100 LOCATE ,,1 ;включить курсор в текущей позиции
и
100 LOCATE ,,0 ;снова выключить курсор
Курсор будет оставаться при последующих появлениях оператора
LOCATE без установки каждый раз третьего параметра. Однако надо
отметить, что операторы INPUT и INPUT$ выключат его после их
выполнения.
Средний уровень.
Ассемблерные программы оставляют курсор включенным, до тех
пор, пока им не указано обратное. Операционная система не предос-
тавляет специальных средств выключения курсора, но это легко
сделать. Надо просто позиционировать курсор за пределы экрана, с
помощью функции 2 прерывания 10H установить его в первую позицию
26-й строки. Помните, что координаты отсчитываются от нуля, так
что этой позиции соответствуют координаты 25,0.
MOV BH,0 ;номер страницы (всегда 0 для монохромного)
MOV DH,25 ;строка
MOV DL,0 ;столбец
MOV AH,2 ;номер функции
INT 10H ;устанавливаем курсор за пределы экрана
Низкий уровень.
Бит 6 регистра 10 микросхемы 6845 [4.1.1] выключает курсор,
когда он установлен в 1, и включает его, когда сброшен в 0. Этот
регистр содержит также значение "начальной строки" для курсора,
которое вместе со значением "конечной строки" определяет толщину
курсора [4.2.4]. Поскольку тип курсора не имеет значения, когда
курсор выключен, то надо просто поместить в регистр 10 значение
32, чтобы установить бит 6. Чтобы восстановить курсор Вы должны
также вернуть значение "начальной строки" курсора. Для нормаль-
ного курсора это значение равно 11. Значение "конечной строки"
при этих процедурах не меняется, поскольку оно хранится в другом
регистре.
;---выключение курсора
MOV DX,3B4H ;номер порта адресного регистра 6845
MOV AL,10 ;выбор регистра 10
OUT DX,AL ;посылаем запрос
INC DX ;доступ к регистру через следующий порт
MOV AL,32 ;устанавливаем бит 6 для выключения курсора
OUT DX,AL ;выключаем курсор
;---обратное включение курсора
MOV AL,11 ;значение "начальной строки"
OUT DX,AL ;включаем курсор