Справочник программиста на персональном компьютере фирмы 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       ;включаем курсор