Текстовые окна

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

Экранные редакторы и многие другие сложные программы должны уметь обновлять экран сложными способами, например удалять одну строку в середине экрана. Для обеспечения этих потребностей большинство драйверов вывода поддерживают наборы команд для перемещения курсора, вставки и удаления символов или строк там, где находится курсор, и т. д. Эти команды часто называются эскейп-последовательностями. В период широкого распространения «немых» ASCII-терминалов с отображением 25 строк по 80 символов существовали сотни типов терминалов, у каждого из которых имелись собственные эскейп-последователности. Поэтому трудно было написать программу, которая работала на более чем одном типе терминала.

Одно из решений, представленное в системе Berkeley UNIX, представляло собой базу данных терминалов, называемую termcap. Этот программный пакет определял набор основных действий, таких как перемещение курсора в позицию (строка, столбец). Для перемещения курсора в конкретное место программа, например редактор, использовала общую эскейп-последовательность, которая затем превращалась в фактическую эскейп- последовательность для того терминала, на который осуществлялся вывод. Таким образом, редактор работает на любом терминале, для которого имеется запись в базе данных termcap. Основная часть UNIX-программ по-прежнему именно так и работает, даже на персональных компьютерах.

Со временем промышленность стала испытывать потребность в стандартизации эскейп-последовательностей, поэтому был разработан стандарт ANSI. Некоторые из его значений показаны в табл. 5.5.

Таблица 5.5. Эскейп-последовательности стандарта ANSI, воспринимаемые драйвером терминала при выводе информации. ESC означает ASCII-символ эскейп (0x1B), а n, m и s являются дополнительными числовыми параметрами



Рассмотрим, как эти эскейп-последовательности могут использоваться текстовым редактором. Предположим, что пользователь набрал команду, предписывающую редактору удалить все символы в строке 3, а затем убрать разрыв между строками 2 и 4. Редактор должен послать по последовательному каналу в адрес терминала следующую эскейп-последовательность:

ESC [ 3 ; 1 H ESC [ 0 K ESC [ 1 M

(где пробелы используются только для разделения символов и по каналу не передаются). Эта последовательность приводит к перемещению курсора в начало третьей строки, удалению всей строки, а затем удалению только что опустевшей строки, заставляя все строки, начиная с четвертой, подняться на одну строку. При этом та строка, что была четвертой, становится третьей, пятая — четвертой и т. д. Аналогичные эскейп-последовательности могут использоваться для добавления текста в середину дисплея. Слова могут добавляться или удаляться аналогичным образом.

<< | >>
Источник: Э. ТАНЕНБАУМ Х. БОС. СОВРЕМЕННЫЕ ОПЕРАЦИОННЫЕ СИСТЕМ Ы 4-е ИЗДАНИЕ. 2015

Еще по теме Текстовые окна:

  1. 20 мая
  2. ПАМЯТЬ: РАЗЛИЧИЕ ИНДИВИДУАЛЬНОЕ
  3. Г.В. Прутцков . Введение в мировую журналистику, 2003
  4. Кудинов Ю. И., Пащенко Ф. Ф., Келина А. Ю.. Практикум по основам современной информатики: Учебное пособие., 2011
  5. Ю. И. КУДИНОВ, Ф.Ф. ПАЩЕНКО, А. Ю. КЕЛИНА. ПРАКТИКУМ ПО ОСНОВАМ СОВРЕМЕННОЙ ИНФОРМАТИКИ, 2011
  6. Международное радиовещание в век Интернета.
  7. Интерактивность массмедиа.
  8. Обзор 19-й главы
  9. Небольшие, но важные изменения в способе мышления могут открыть путь к достижению большего личного успеха.
  10. Третью коммуникационную революцию
  11. Мой метод расшифровки снов
  12. Лариса Александровна Малинина Вадим Васильевич Лысенко Максим Анатольевич Беляев. Основы информатики: Учебник для вузов, 2006
  13. четвертая коммуникационная революция
  14. ГДЕ ВАМ УДОБНО?