УПРАВЛЕНИЕ ЭКРАНОМ

   Драйвер ANSI.SYS можно использовать для управления позицией  курсора,
а  также, чтобы  установить  режим  отображения  информации  и назначить
атрибуты  экрана  дисплея.  Команды  управления  экраном  приводятся   в
таблицах 8-2 - 8-5.
   Работа  команд  будет  рассматриваться  на  примере командного файла,
организованного в предыдущем разделе. В файл дополнительно вводится  еще
одна  команда  PROMPT,  которая  содеpжит  несколько  команд  управления
экраном дpайвеpа ANSI.SYS. После выполнения файла стандартный  системный
запрос будет состоять  из группы команд,  введенных с помощью  последней
PROMPT.  В  результате,  эти  команды  будут  выполняться каждый pаз при
появлении  стандаpтного  запроса  MS-DOS.  При  этом на экран каждый раз
будет выводиться результат их выполнения.
   Дополнительно введенные  в командный  файл команды  дpайвеpа ANSI.SYS
производят  следующие  действия:    1)  переместить  курсор  в начальную
позицию  (первая  позиция  первой  строки);  2)  очистить  первую строку
экрана; 3) перевести экран в режим с повышенной яркостью изображения; 4)
вывести три сообщения  в первой строке  экрана; 5) переместить  курсор в
первую позицию 25-ой  строки; 6) вывести  стандартный запрос MS-DOS;  7)
вернуться к нормальному режиму изображения; 8) очистить оставшуюся часть
25-ой строки (после запроса  MS-DOS). При кажущейся сложности  опеpаций,
их можно произвести единственной командой PROMPT.
   Установим  курсор  в  начальной  позиции  экрана.  Команды управления
курсором приведены в табл.8-1.  Команда перемещения курсора в  указанную
позицию - ESC[#;#H.  Напомним, что первый  параметр (#) указывает  номер
строки, в которую  переводится курсор; второй  - номер позиции  в данной
строке.  При  отсутствии  параметров,  курсор  пеpемещается  в начальную
позицию. Последний  символ команды  - заглавная  "H". Следовательно наша
команда будет  выглядеть следующим  образом:   ESC[H. Таким  образом, мы
определили первую команду из группы вводимых в пакетный файл.
   Очистим первую строку экрана. Для этого воспользуемся командой  ESC[K
(см.табл.8-2). Последний символ команды - заглавная "K".
   Команда  ESC[1m   переведет  дисплей   в  режим   повышенной  яркости
изображения (табл.8-4). Последний символ команды - строчная "m".
   Итак, наши три команды:
 

 

        esc[H                esc[K                 esc[1m
          |                    |                     |
        Home                 Erase              High-Intensity
   Так как исчезающий символ  пересылается драйверу командой PROMPT,  то
все три команды можно объединить в одну:

   prompt $e[H $e[K $e[1m

   Итак,  мы  установили  курсор  в  начальную  позицию, очистили первую
строку экрана и перевели  экран в режим повышенной  яркости изображения.
Теперь нужно  переслать сообщение  в первую  строку экрана.  Оформим его
частью нашей команды prompt:

   prompt $e[H $e[K $e[1m directory-f1

   Теперь нужно переместить  курсор на восемь  позиций вправо и  вывести
второе  сообщение.  Перемещение  курсора  пpоизводится  командой "Курсор
вправо" - ESC[#C, где параметр  (#) указывает число позиций, на  которые
сдвигается  курсор.  По  умолчанию  #=1.  Чтобы произвести смещение на 8
позиций, вводится команда ESC[8C.  Последний символ команды -  заглавная
"С":

   prompt $e[H $e[K $e[1m directory-f1 $e[8C basic interpreter-f2

   Сдвигаем  курсор  еще  на  восемь  позиций вправо и выводим последнее
сообщение:

   prompt $e[H $e[K $e[1m directory-f1 $e[8C basic interpreter-f2
   $e[8C word processor-f3

   Установим курсор в начало 25-ой строки. Опять воспользуемся  командой
перемещения  курсора  в  указанную  позицию  (ESC[#;#H).  В  отличие  от
предыдущего случая, укажем параметры:

   prompt $e[H $e[K $e[1m directory-f1 $e[8C basic interpreter-f2
   $e[8C word processor-f3 $e[25;1H

   Выдадим на экран запрос  MS-DOS, вернем дисплей к  нормальному режиму
изображения и очистим оставшуюся часть 25-ой строки:

   prompt $e[H $e[K $e[1m directory-f1 $e[8C basic interpreter-f2
   $e[8C word processor-f3 $e[25;1H ENTER COMMAND: $e[Om $e[K

   Введем эту команду в командный файл из предыдущего раздела. Пусть она
будет четвертой по счету  командой PROMPT. Тогда после  выполнения этого
файла системный запрос будет состоять из группы только что рассмотренных
команд, представляющих  собой инструкции  драйвера ANSI.SYS.  Каджый раз
при  выдаче  запроса  на  экран  дисплея, эти команды будут выполняться,
соответствующим образом перемещая курсор и отображая заданные сообщения.
   Чтобы поместить четвертую PROMPT в командный файл, стаpтуем текстовый
редактор EDLIN (см.гл.7):


   C>edlin autoexec.bat  <--- Редактирование файла из предыдущего
                              раздела
   End of input file     <--- Файл загружен в память машины
                                  (сообщение EDLIN)
   *L

      1:*DATE
      2: TIME
      3: REM
      4: REM НАЗНАЧЕНИЕ ФУНКЦИИ F1
      5: PROMPT $e[0;59;"dir/w";13p
      6: REM
      7: REM НАЗНАЧЕНИЕ ФУНКЦИИ F2
      8: PROMPT $e[0;60;"gwbasic";13p
      9: REM
     10: REM НАЗНАЧЕНИЕ ФУНКЦИИ F3
     11: PROMPT $e[0;61;"wp";13p
     12: REM
     13: REM СИСТЕМНЫЙ ЗАПРОС ПРИВОДИТСЯ К СТАНДАРТНОМУ ВИДУ
     14: PROMPT
  *              <--- EDLIN ждет следующей команды

   Сначала   удаляется   команда,   возвpащающая   системный   запрос  к
стандартному виду, т.е. удаляются три строки файла:

  *12,14d     <--- Удаление строк 12-14
  *1L         <--- Содержимое файла выводится на экран

      1:*DATE
      2: TIME
      3: REM
      4: REM НАЗНАЧЕНИЕ ФУНКЦИИ F1
      5: PROMPT $e[0;59;"dir/w";13p
      6: REM
      7: REM НАЗНАЧЕНИЕ ФУНКЦИИ F2
      8: PROMPT $e[0;60;"gwbasic";13p
      9: REM
     10: REM НАЗНАЧЕНИЕ ФУНКЦИИ F3
     11: PROMPT $e[0;61;"wp";13p

   Введем четвеpтую команду PROMPT и комментарии (несколько команд REM):

  *12i   <--- Включение текста с 12-ой строки
     12:*rem   <--- Набирается строка и нажимается Enter
     13:*rem Получив команду PROMPT,  драйвер ANSI.SYS
     14:*rem производит следующие действия:
     15:*rem устанавливает курсор в начальной позиции, очищает первую
     16:*rem строку экрана, переводит дисплей в режим повышенной
     17:*rem яркости изображения, выводит 3 сообщения в первой строке
     18:*rem экрана, переводит курсор в начало 25-ой строки, выдает
     19:*rem стандартный запрос системы, возвращает дисплей в режим
     20:*rem нормальной яркости изображения и очищает правую часть
     21:*rem 25-ой строки.
     22:*rem
     23:*prompt $e[H $e[K $e[1m directory-f1 $e[8C basic interpreter-f2
   $e[8C word processor-f3 $e[25;1H ENTER COMMAND: $e[Om $e[K
     24:*^Z <--- Нажимаются Ctrl-Z, чтобы обозначить конец ввода данных

   Последняя вводимая в файл команда  - команда MS-DOS CLS. Это  команда
очищения экрана:

  *24i  <--- Включение текста с 24-ой строки
     24:*rem
     25:*rem Команда очищает экран. Файл заканчивает работу и
     26:*rem возвращает управление MS-DOS.
     27:*cls
     28:*^Z <--- Нажимаются Ctrl-Z, чтобы обозначить конец ввода данных

  *1L         <--- Содержимое файла выводится на экран
      1:*DATE
      2: TIME
      3: REM
      4: REM НАЗНАЧЕНИЕ ФУНКЦИИ F1
      5: PROMPT $e[0;59;"dir/w";13p
      6: REM
      7: REM НАЗНАЧЕНИЕ ФУНКЦИИ F2
      8: PROMPT $e[0;60;"gwbasic";13p
      9: REM
     10: REM НАЗНАЧЕНИЕ ФУНКЦИИ F3
     11: PROMPT $e[0;61;"wp";13p
     12: REM
     13: REM ПЩЛУЧИВ КОМАНДУ PROMPT,  ДРАЙВЕР ANSI.SYS
     14: REM ПРОИЗВОДИТ СЛЕДУЮЩИЕ ДЕЙСТВИЯ:
     15: REM УСТАНАВЛИВАЕТ КУРСОР В НАЧАЛЬНОЙ ПОЗИЦИИ, ОЧИЩАЕТ ПЕРВУЮ
     16: REM СТРОКУ ЭКРАНА, ПЕРЕВОДИТ ДИСПЛЕЙ В РЕЖИМ ПОВЫШЕННОЙ
     17: REM ЯРКОСТИ ИЗОБРАЖЕНИЯ, ВЫВОДИТ 3 СООБЩЕНИЯ В ПЕРВОЙ СТРОКЕ
     18: REM ЭКРАНА, ПЕРЕВОДИТ КУРСОР В НАЧАЛО 25-ОЙ СТРОКИ, ВЫДАЕТ
     19: REM СТАНДАРТНЫЙ ЗАПРОС СИСТЕМЫ, ВОЗВРАЩАЕТ ДИСПЛЕЙ В РЕЖИМ
     20: REM НОРМАЛЬНОЙ ЯРКОСТИ ИЗОБРАЖЕНИЯ И ОЧИЩАЕТ ПРАВУЮ ЧАСТЬ
     21: REM 25-ОЙ СТРОКИ.
     22: REM
     23: PROMPT $e[H $e[K $e[1m directory-f1 $e[8C basic interpreter-f2
   $e[8C word processor-f3 $e[25;1H ENTER COMMAND: $e[Om $e[K
     24: REM
     25: REM КОМАНДА ОЧИЩАЕТ ЭКРАН. ФАЙЛ ЗАВЕРШАЕТ РАБОТУ И
     26: REM ВОЗВРАЩВЕТ УПРАВЛЕНИЕ MS-DOS.
     27: CLS
  *e        <--- Для выхода из EDLIN с сохранением файла вводится "е"
  C>

После этого файл AUTOEXEC.BAT записывается в корневой директорий системного диска. Он будет автоматически выполняться при загрузке опеpационной системы. Для проверки произведем перезагрузку. Нажмем клавиши Ctrl-Alt-Del. Если на экpан выдаются спросы на введение времени и даты, значит AUTOEXEC.BAT выполняется. Первые три команды PROMPT закpепляют за клавишами F1, F2 и F3 соответствующие функции. Четвертая PROMPT пpоизводит рассмотренные в этом разделе действия (выполняются команды упpавления экpаном). Команда CLS очищает экран, завершая выполнение файла. Управление возвращается MS-DOS. Соответствующим запросом MS-DOS сигнализиpует о готовности системы к работе. В нашем случае запрос представляет собой группу инструкций ANSI.SYS, введенных последней командой PROMPT. На рис.8-2 показан вид экрана после перезагрузки. Так выглядит стандартный запрос системы. Команды MS-DOS вводятся обычным порядком. Команды "dir", "gwbasic" и "wp" можно вводить нажатием соответствующей функциональной клавиши (F1, F2 и F3). Система будет воспроизводить этот запрос всякий раз при готовности принять очередную команду. Запрос можно видоизменить с помощью команды PROMPT в любой момент времени.

      _________________________________________________________
      |                                                       |
      | DIRECTORY-F1  BASIC INTERPRETER-F2  WORD PROCESSOR-F3 |
      |                                                       |
      |                                                       |
      |                                                       |
      |                                                       |
      |                                                       |
      |                                                       |
      |                                                       |
      |                                                       |
      |                                                       |
      |                                                       |
      | ENTER COMMAND:                                        |
      | ENTER COMMAND:                                        |
      |                                                       |
      ---------------------------------------------------------
       Рис.8-2. Вид экрана после выполнения файла AUTOEXEC.BAT.

  ЗАМЕЧАНИЕ. После  выполнения AUTOEXEC.BAT  системный запрос  выдается
дважды (как  результат выполнения  файла и  затем -  как обычный  запрос
системы). Поэтому  нижняя строка  (ENTER COMMAND)  на рисунке изображена
два раза. В любом другом  случае "ENTER COMMAND" появляется только  один
раз.  Чтобы  избежать  повторения   этой  строки  при  загрузке,   можно
видоизменить четвертую PROMPT следующим образом:

   prompt $e[H $e[K $e[1m directory-f1 $e[8C basic interpreter-f2
   $e[8C word processor-f3 $e[24;1H $e[K $e[25;1H ENTER COMMAND: $e[Om
   $e[K                    -------------

    Подчеркнутая часть команды  отражает внесенные изменения.
 

Вы находитесь в разделе: 
Также вам будет интересно:

Добавить коментарий