#####################################################################
########             Описание интерфейса модуля            ##########
########          транзитного редактирования данных        ##########
########                  " SHELLEDIT "                    ##########
########                   Версия 2.0                      ##########
########              Программист Суслов СЮ                ##########
########                  г. Москва.                       ##########
########    МГТУ им. НЭ Баумана, РК-9;  тел. 263-63-88     ##########
########    НПО  @@@@@@@@@@;            тел. 524-05-59     ##########
########  Для связи г. Балашиха-7, 143900, Суслову С.Ю.    ##########
########  Язык - TURBO PASCAL 5.5 . Mодуль - SHELLED.TPU.  ##########
#####################################################################

#####################################################################
     I. Комплект поставки.
#####################################################################
 1. shinter      - файл, содержащий описание интерфейса модуля,
 2. shintrd      - файл, содержащий руководство пользователя,
 3. shexampl     - файл, содержащий примеры работы с модулем,
 3. shmacro1.lex - файл, содержащий макросы LEXICONа для создания
                   программ,
 4. shmacro2.lex - файл, содержащий макросы LEXICONа для создания
                   файл-масок,
 5. shelled.tpu  - файл, содержащий tpu-модуль с подпрограммами.

#####################################################################
     II. Описание.
#####################################################################
     Модуль транзитного редактирования данных " SHELLEDIT "  предназ-
 начен для простой огранизации интерфейса пользователя и программного
 обеспечения в текстовом режиме работы монитора. По своим возможнос-
 тям он рассчитан на профессиональных пользователей, но сделан макси-
 мально легким в использовани, большинство режимов устанавливается по
 умолчанию, что позволяет без труда подключать его к своим программам
 и неопытным программистам.
     Пользователь, пользуясь любым текстовым редактором, создает
 текстовый файл (как вижу, так и будет выводиться, при этом разреша-
 ется использование любых символов кодовой таблицы в любом порядке),
 содержимое которого с помощью процедуры модуля выводится на экран в
 окне соответствующего размера. В нем устанавливется ключевые символы
 для вывода значений переменных. В программе, используя процедуры мо-
 дуля, выводит значения переменных, они будут накладываться на выве-
 деный файл (поэтому он нзывается файл-маска), начиная с позиций, за-
 нятых ключевыми символами. Каждому выводимому значению автоматически
 присваиваются атрибуты для редактирования: возможность и необходи-
 мость изменения значения, цвета вывода и т.д. Они устанавливаются по
 умолчанию, но по желанию программиста могут быть изменены. Подпрог-
 рамма-редактор позволяет пользователю изменить любые выведенные зна-
 чения. Во время ее работы клавиатура используется как в обычном ре-
 дакторе: клавиши со стрелками для перемещения курсора, <INSERT> -
 для переключения режимов "вставка"/"замена" и т.д. при этом курсор
 всегда находится только в тех позициях, в которых разрешен ввод. Та-
 ким образом можно изменять значения, но сама маска при этом остается
 недоступной.
     По окончанию работы редактора переменные примут значения, имею-
 щиеся на экране, либо имевшиеся при выводе, если выход из редактора
 произошел после нажатия клавиши <ESC>.
     В процессе работы редактор проверяет соответствие типов, выпол-
 няет другие проверки, установленные пользователем. В случае ошибки
 подается звуковой сигнал, выход из редактора возможен только после
 корректного ввода или по <ESC> с возвратом первоначально установлен-
 ных значений. Это исключает принятие переменными неправильных значе-
 ний. Редактор имеет несколько режимов работы, они также устанавлива-
 ются по умолчанию, но могут быть изменены.
    Редактор работатет со следующими типми TURBO PASCAL:
    - integer,
    - real,
    - string,
    - boolean.
 Причем integer, real представляется на экране в формате с фиксиро-
 ванной запятой, string допускает использование любых текстовых сим-
 волов кодовой таблицы, boolean непосредственно на экран не выводит-
 ся, со значениями true и false связываются строки (их определяет
 пользователь, это могут быть, например: "TRUE" и "FALSE","включено"
 и "выключено", "установлено" и "снято", "ON" и "OFF" и т.д.)

#####################################################################
     III. Последовательность действий.
#####################################################################

#####################################################################
     A. Создание файла-маски.
#####################################################################
     1. Используя любой текстовый редактор, позволяющий ра-
 ботать в режиме "вставка"/"замена", создайте текстовый файл-маску.
     Внимание! Не используйте символы, описанные как специальные: "_"
 (символ подчеркивания),"\" (обратный слеш).
     Содержимое этого файла будет
 выводиться на экран монитора в автоматически организованном окне со-
 ответствующего размера, поэтому его размеры должны соответствовать
 режиму работы монитора ( не более 25 строк с 80 символами в каждом
 для нормального текстового режима монитора 25 Х 80 знакомест), прав-
 да, практически этот размер несколько меньше потому, что для нор-
 мальной работы процедур модуля нельзя заполнять правую нижнюю пози-
 цию экрана.
     2. В режиме "замена" установите позиции, начиная с которых будет
 производиться вывод значений, используя в качестве ключевых символов
 для вывода "_" (символ подчеркивания). Учитывайте, что при выводе
 значение выводится полностью, но для нормальной работы оно должно
 полностью умещаться в одной строке и, желательно, до символа, отлич-
 ного от пробела. Если при выводе оно затирает на экране символ файла
 -маски, отличный от пробела, все позиции в одной строке занятые при
 выводе, будут доступны при редактировании. В противном случае дос-
 тупное пространство для редактирования - от ключевого символа до
 следующего символа, отличного от пробела. При многократном и непре-
 рывном использовании одной маски, она может выводиться на экран од-
 нократно, на нее будут накладываться новые значения, старое при этом
 затирается новым. Остальные знакоместа, бывшие доступными для редак-
 тирования, заполняются пробелами.
     3.В режиме "вставка" установите ключевые символы, начиная с ко-
 торых будет производиться изменение цвета выводимых на экран симво-
 лов. После них должен следовать пробел. На экран они выводиться не
 будут.
     \N - переход к заданному в файле цвету с кодом N для вывода сим-
 волов,
     \ - возврат к установленному в подпрограмме цвету для вывода
 символов,
     \\N - переход к заданному в файле цвету с кодом N для вывода фо-
 на,
     \\ - возврат к установленному в подпрограмме цвету с кодом N для
 вывода фона.

#####################################################################
     Б. Подключение модуля к программе.
#####################################################################
     1. В начале программы, к которой хотите подключить модуль тран-
 зитного редактирования данных " SHELLEDIT ", добавьте " Uses
 Shelled; ", тем самым указав на использование внешнего модуля. При
 компилировании компилятору укажите, где находится файл Shelled.TPU
 (смотрите руководство пользователя TURBO PASCAL).
     2. В собственной программе, воспользовавшись подпрограммой моду-
 ля для вывода файла-маски - MaskScrin, выведите файл-маску на экран.
 Она отводит память в динамической области, удаляя структуры, создан-
 ные при предыдущем обращении к подпрограмме, для атрибутов каждой
 ключевой позиции, значения "по умолчанию ", которых устанавливаются
 при каждом выводе, и режимов редактора, устанавливаемых при обраще-
 нии к MaskScrin. Поэтому, если Вы пользуютесь данной маской непре-
 рывно, накладывая на нее новые значения, используйте подпрограмму
 однократно,это сэкономит время на обращении к диску, обновлении эк-
 рана, структур динамических переменных.
     После обращения к процедуре первой будет заполняться левая верх-
 няя ключевая позиция для вывода.
     3. Воспользуйтесь подпрогораммами модуля для вывода значений
 переменных и текста:
     переменной типа INTEGER - WriteI,
     переменной типа REAL    - WriteR,
     переменной типа BOOLEAN - WriteB,
     переменной типа STRING  - WriteS,
     вывода текста,т.е. строки не изменяющейся при редактировании -
                               WriteT,
     вывода значений изменяющихся со временем между обращениями к ре-
     дактору -
                               WriteD.
     Значения будут выводиться, последовательно заполняя ключевые по-
 зиции для вывода слева направо, после того, как все позиции в строке
 будут заполнены, начнут заполняться позиции в стоке ниже.
     Если необходимо изменить последовательность вывода, нужно вос-
 пользоваться подпрограммой SetPoint.
     При выводе устанавливаются значения "по умолчанию" атрибутов для
 редактирования, которые можно изменить с помощью процедур:
    SetColor (для следующей выводимой переменной устанавливает цвета
    вывода),
    SetGoTo (для выведенной переменной устанавливает/снимает необхо-
 димость перехода к следующей позиции по окончанию редактирования
 данной; если ее значение не изменялось, редактор игнорирует атри-
 бут),
     SetInterval (для выведенной переменной устанавливает допустимый
 интервал значений, проверяется при редактировании),
     SetMayChandg (для выведенной переменной устанавливает/снимает
 возможность изменения значения  при редактировании;  переход к дан-
 ной позиции в редакторе невозможен, если установлена невозможность
 изменения ее значения).
     SetMustChandg (для выведенной переменной устанавливает/снимает
 необходимость изменения значения при редактировании; при переходе к
 данной позиции, если установлена необходимость изменения значения,
 выход из редактора возможен только после изменения этого значения
 или по <ESC>).
     SetPoz (для вывода следующей переменной устанавливает новые дос-
 тупные позиции),
     SetQuit(для выведенной переменной устанавливает/снимает необхо-
 димость выхода из подпрограммы редактировании в случае изменения
 значения , при этом, если необходимость выхода установлена, процеду-
 ра EditScrin по окончанию редактирования переменной завершает рабо-
 ту, в параметре EXITSYMBOL возвращает 'Q'; если ее значение не изме-
 нялось, редактор игнорирует атрибут).
     Можно установить с помощью процедуры  Connect(относится к выве-
 денной переменной) только те значения,  которые может принимать пе-
 ременная, и из списка которых можно осуществлять выбор при редакти-
 ровании, т.е. установить перечисляемый тип. Используя процедуру
 SetMayConnect (относится к выведенной переменной) можно установить/
 снять возможность дополнения списка пользователем при редактирова-
 нии.
     Вызвав процедуру ConnectHelp (относится к выведенной перемен-
 ной), можно подключить строку подсказки, выводимой при редактирова-
 нии переменной. Вывод обязательно должен быть инициализирован проце-
 дурой HelpSit (относится ко всем подсказкам) до вызова редактора,
 она определяет цвет символов строки подсказки, ее размещение.
     4.Перед вызовом редактора можно изменить режимы его работы,
 устанавливаемые по умолчанию во время вывода маски на экран.
     InsertEdit - устанавливает режим вставки/замены для редактора
 (в процессе редактирования - клавиша <INSERT>).
     TimeInterrupt - устанавливает выход из процедуры редактирования
 через промежуток времени. Если выход установлен и пользователь не
 вводит информацию, через заданный интервал происходит выход из ре-
 дактора, при этом процедура EditScrin в параметре EXITSYMBOL воз-
 вращает 'T'.
     EnterInterrupt - разрешает/запрещает прерывание редактирования
 при нажатии <ENTER>. Если прерывание разрешено, после нажатия
 <ENTER> процедура  EditScrin завершает работу ,в параметре
 EXITSYMBOL возвращает 'R'.
     EditSelect - устанавливает цвет выделения редактируемой позиции.
     5.Если Вы хотите только вывести значения и не изменять их, ре-
 дактор не вызывайте, если хотите и изменить их, после заполнения
 всех ключевых позиций вызовите подпрограмму-редактор  EditScrin.
     Перед вызовом редактора не забудьте определить координаты пози-
 ции, с редактирования которой необходимо начать (входные параметры
 EditScrin STROKA,NOMBER). При этом Вы можете установить координаты
 позиции, которую сами описали как недоступную для редактирования.
 Находясь в редакторе, Вы уже не сможете перейти к ней повторно.
     По окончанию работы переменные принимают значения, имеющиеся в
 окне, кроме выхода из режима редактирования при нажатии клавиши
 <ESC>, в этом случае переменные принимают значения, имевшиеся при
 выводе процедурами модуля.
     Выход из редактора осуществляется при нажатии клавиш:
 <ESC>,<F1>,<F2>,<F3>,<F4>,<F5>,<F6>,<F7>,<F8>,<F9>,<F10>,<PgUp>,
 <PgDn>, и, если это разрешено с помощью процедуры EnterInterrupt,
 <RETURN>.
 Это позволит Вам использовать функциональную клавиатуру и, проанали-
 зировав EXITSYMBOL - код выхода подпрограммы EditScrin, связать с
 клавишами определенную последовательность действий. Знание места
 расположения курсора в момент выхода (выходные параметры EditScrin -
 STROKA, NOMER), отнести ее к конкретной переменной. Если вас не
 удовлетворяет такое количество кодов, обратитесь к разработчику.
     Редактор запоминает состояние в момент выхода, поэтому можно
 сделать незаметным для пользователя выход из подпрограммы, обработку
 кода выхода и обратный вход в подпрограмму. Для этого достаточно не
 изменять параметры с которыми произошел выход - кода выхода, номер
 строки с ключевым символом и номер в строке - STROKA, NOMER, пользо-
 ваться в промежутках между обращениями к редактору процедурой WriteD
 (Помните! Вывод с ее помощью возможен только после заполнения пози-
 ции процедурой вывода определенного типа:WriteI, WriteR, WriteB,
 WriteS, или WriteT).
      EditScrin проверяет соответствие типов, идентифицирует ошибки
 ввода, в случае ошибки подается звуковой сигнал. Выход из подпрог-
 раммы в этом случае возможен либо после корректного ввода, либо
 после нажатия клавиши <ESC>.
      Если в процессе работы Вам перед выводом необходимо обновить
 маску, выведенную на экран, без обновления структуры динамических
 переменных, созданной при обращении к подпрограмме MaskScrin, вос-
 пользуйтесь процедурой RefreshMaskScrin.
      Проверить все ли переменные, описанные как обязательные для из-
 менения, были изменены и взять координату первого неизмененного,
 если такой есть, можно с помощью процедуры GetMustChandg.
     После обращения к процедуре первой будет заполняться левая верх-
 няя ключевая позиция для вывода.
     6.Если Вы хотите, чтобы переменные вновь приняли значения, имев-
 шиеся при выводе переменной процедурами модуля, например, при се-
 мантической ошибке в отредактированных данных, это можно сделать,
 вызвав подпрограму ESCEdit.
     После обращения к процедуре первой будет заполняться будет левая
 верхняя ключевая позиция для вывода.
     7.Если ваша программа сама размещает данные в динамической об-
 ласти, и Вам необходимо максимальное свободное пространство, по
 окончанию редактирования воспользуйтесь процедурой DeleteMaskScrin,
 она очистит память от созданных стуктур.
     Одновременно она вернет экран в состояние, имевшееся до обраще-
 ния к MaskScrin.
     Внимание! После этого Вы не сможете работать с процедурами моду-
 ля до нового обращения к MaskScrin, т.к. вся информация будет поте-
 ряна. Переменные, естественно, сохранят значения, установленные при
 редактировании.
    8.После работы EditScrin курсор становится невидимым,  для того
 чтобы восстановить его, вызовите подпрограмму CursorSize.

#####################################################################
     В. Руководство пользователя редактора.
#####################################################################
     Режимы:
 "ВСТАВКА"/"ЗАМЕНА"
     изменяется при нажатии <INSERT>;
 В процессе работы редактора размер курсора сигнализирует о режиме
     и типе редактируемой переменной:
  отсутствует - перечисляемый тип, используйте для выбора <+>, <->,
     или, если это разрешено процедурой EnterInterrupt,  <ENTER>,
  нормальный - режим вставки,используйте
    <+> -  цифру над курсором заменить на следующую (используется для
      увеличения числа),
    <-> -  цифру над курсором заменить на предыдущую (используется для
      уменьшения числа),
    <DEL> - удаляется символ над курсором,
    <BEACKSPEICE> - удаляется символ слева от курсора;
    <HOME> - переместить курсор в первую доступную позицию;
    <END> - переместить курсор в последнюю доступную позицию;
  средний - режим замены
    <DEL> - текущее значение полностью удаляется,
    <BEACKSPEICE> - удаляется символ слева от курсора;
    <HOME> - переместить курсор к первой переменной;
    <END> - переместить курсор к последней переменной;
  большой - перечисляемый тип, возможно добавление списка альтерна-
    тивных значений, используйте для выбора <+>, <->, или, если раз-
    решено процедурой EnterInterrupt, <ENTER>, для добавления -
    <DEL> - текущее значение полностью удаляется,
    <BEACKSPEICE> - удаляется символ слева от курсора;
   Для перемещения курсора, перехода к другой переменной используйте
 клавиши управления курсором.
   По окончанию работы переменные принимают значения, имеющиеся в окне,
 кроме выхода из режима редактирования при нажатии клавиши <ESC>, в
 этом случае они принимают значения, имевшиеся при выводе процедурами
 модуля.
   Действия, закрепленные за функциональными клавишами, определяются
 программистом, использующим модуль.
#####################################################################
     IV. Атрибуты переменных при редактировании.
#####################################################################
     MUSTEXIT - определяет необходимость выхода из подпрограммы ре-
 дактирования в случае изменения значения  переменной:
     true  -  выходить,
     false -  не выходить;
     MUSTGOTO - определяет необходимость перехода к следующей позиции
 по окончанию редактирования переменной,
     true  -  переходить,
     false -  не переходить;
     MUSTCHANDG - определяет необходимость изменения значения  пере-
 менной:
     true  -  необходимо изменять,
     false -  необходимости изменять нет;
     CHANDG - определяет, изменялось ли значение переменной при ре-
 дактировании,
     true  -  изменялось,
     false -  не изменялось;
     MAYCHANDG - определяет возможность изменения значения  перемен-
 ной,
     true  -  можно изменять,
     false -  нельзя изменять;
     INTERVAL - определяет возможность изменения значения  переменной
 только в интервале,
     true  -  должна находиться в интервале,
     false -  не должна находиться в интервале;
     MAYCONNECT - для перечисляемого типа определяет возможность до-
 полнения списка возможных значений  переменной;
     true  -  можно дополнять,
     false -  нельзя дополнять;
     STROKA - номер строки, из числа имеющих ключевую позицию для вы-
 вода, в которой находится позиция вывода переменной;
     NOMBER - номер в строке, из числа имеющих ключевую позицию для
 вывода, в которой находится позиция вывода переменной;
     GOTOSTROKA - номер строки из числа имеющих ключевую позицию для
 вывода, к редактированию позиции,в которой необходимо перейти;
     GOTONOMBER - номер в строке, из числа имеющих ключевую позицию
 для вывода, к редактированию позиции в которой необходимо перейти.
     POZSTROKA - номер строки, в которой находится позиция вывода
 переменной, относительно текущего окна, в которое выведен файл-маска,
     POZN - первая доступная позиция, относительно левого края теку-
 щего окна,
     POZK - последняя доступная позиция, относительно левого края
 текущего окна,
     COLORTEXT - цвет символов,
     COLORBACKGROUND - цвет фона,
     HELP - строка подсказки,
     MIN - минимальное возможное значение,
     MAX - максимальное возможное значение,
     TYPE - тип выводимой переменной.

#####################################################################
     VI. Установка атрибутов переменных.
#####################################################################
 ********************************************************************
 *                 *  значение атрибута,      * имена               *
 *     атрибут     *  устанавливаемое         * процедур,           *
 *                 *  по умолчанию при выводе * изменяющих значение *
 *                 *  переменной процедурами: * атрибута            *
 *                 *  WriteI, WriteR, WriteB, *                     *
 *                 *    WriteS, или WriteT    *                     *
 ********************************************************************
 *       1         *           2              *         3           *
 ********************************************************************
 * MUSTEXIT        *  false                   * SetQuit             *
 * MUSTGOTO        *  false                   * SetGoTo             *
 * MUSTCHANDG      *  false                   * SetMustChandg       *
 * CHANDG          *  false                   * EditScrin           *
 * MAYCHANDG       *  true (для текста-false) * SetMustChandg       *
 * INTERVAL        *  false                   * SetInterval         *
 * MAYCONNECT      *  false                   * SetMayConnect       *
 ********************************************************************
 * STROKA          *  (1)                     * изменить нельзя     *
 * NOMBER          *  (2)                     * изменить нельзя     *
 * GOTOSTROKA      *  не устанавливается      * SetGoTo             *
 * GOTONOMBER      *  не устанавливается      * SetGoTo             *
 * POZSTROKA       *  (3)                     * изменить нельзя     *
 * POZN            *  (4)                     * SetPoz              *
 * POZK            *  (5)                     * SetPoz              *
 * COLORTEXT       *  (6)                     * SetColor            *
 * COLORBACKGROUND *  (7)                     * SetColor            *
 * HELP            *  не устанавливается      * ConnectHelp         *
 * MIN             *  не устанавливается      * SetInterval         *
 * MAX             *  не устанавливается      * SetInterval         *
 * TYPE            *  (8)                     * изменить нельзя     *
 ********************************************************************
   (1),(2) STROKA,NOMBER - уникальный адрес переменной относительно
 ключевых позиций для вывода, устанавливается процедурой MaskScrin,
 используется всеми подпрограммами, при выводе не изменяется.
   (3),(4),(5) POZSTROKA,POZN,POZK - определяют расположение позиций,
 разрешенных для вывода и доступных при редактировании, устанавлива-
 ются процедурой MaskScrin, при выводе не изменяются.
   (6),(7) COLORTEXT,COLORBACKGROUND - определяют цвета при выводе
 значений на экран монитора, устанавливаются процедурой MaskScrin,
 при выводе не изменяются.
   (8) TYPE - тип переменной, устанавливается автоматически при
 выводе.
    Атрибуты по мере уменьшения приоритета:
     MAYCHANDG
     MAYCONNECT    INTERVAL
     MUSTCHANDG
     MUSTEXIT
     MUSTGOTO
    Наличие памяти у редактора позволяет переходить по MUSTGOTO к
 редактированию переменных у которых установлено MAYCHANDG = false.

#####################################################################
     VII. Установка режимов редактора.
#####################################################################
 ********************************************************************
 *                         *  значение,           * имена           *
 *     режим               *  устанавливаемое     * процедур,       *
 *                         *  по умолчанию        * изменяющих      *
 *                         *  при выводе          * режим           *
 *                         *  маски на экран      *                 *
 ********************************************************************
 *       1                 *           2          *         3       *
 ********************************************************************
 * "ВСТАВКА"/"ЗАМЕНА"      *  "ЗАМЕНА"            * InsertEdit  (1) *
 ********************************************************************
 * ВЫХОД ИЗ ПРОЦЕДУРЫ      *  true                * EnterInterrupt  *
 * ПОСЛЕ НАЖАТИЯ <RETURN>  *                      *                 *
 ********************************************************************
 * ВЫХОД ИЗ ПРОЦЕДУРЫ      *  false               * TimeInterrupt   *
 * ЧЕРЕЗ ПРОМЕЖУТОК ВРЕМЕНИ*                      *                 *
 ********************************************************************
 * ЗВУКОВОЕ ПОДТВЕРЖДЕНИЕ  *  true                * SoundEdit       *
 * частота сигнала         *                      *                 *
 *       ошибки, Гц        *  2000                *                 *
 * частота сигнала         *                      *                 *
 *       подтверждения, Гц *  100                 *                 *
 * продолжительность       *                      *                 *
 *       сигнала, мс       *  100                 *                 *
 ********************************************************************
 * ВЫДЕЛЕНИЕ РЕДАКТИРУЕМЫХ *  false               * EditSelect      *
 * ПОЗИЦИИ                 *                      *                 *
 * код цвета символов      *  15                  *                 *
 * код цвета фона          *  0                   *                 *
 * мерцание символов       *  false               *                 *
 ********************************************************************
 * ВЫВОД СТРОКИ ПРОДСКАЗКИ *  false               * HelpSit         *
 * строка                  *  не устанавливается  *                 *
 * первая позиция          *  не устанавливается  *                 *
 * количество доступных    *  не устанавливается  *                 *
 *       позиций           *                      *                 *
 * код цветов вывода       *  не устанавливается  *                 *
 ********************************************************************
 (1) Переключение режима "ВСТАВКА"/"ЗАМЕНА" в процессе редактирования
 происходит после нажатия <INSERT>.

#####################################################################
     Процедуры, отсутствующие в версии 2.0, имеющиеся в 2.1.
#####################################################################

     Connect,
     SetMayConnect,
     RefreshMaskScrin

#####################################################################
     Процедуры, отсутствующие в версии 2.1, имеющиеся в 2.5.
#####################################################################

     EnterInterrupt,
     ConnectHelp
     HelpSit,
     SetGoTo,
     SetInterval,
     SetMustChandg,
     SetQuit,
     TimeInterrupt,
     DeleteMaskScrin,
     WriteD.

#####################################################################
     Развитие системы, планируемое в версии 3.0 и более поздних.
#####################################################################
 - Работа с поколениями окон.
 - Работа с поколениями экранов.
 - 20..30 % увеличение скорости работы.
 - Описание атрибутов переменных в файлах.
 - Упаковка всех файлов-масок в один файл.
 - Возможность размещения файлов-масок в загрузочном модуле
   (файле, содержащем программу).
 - Печать экрана, формирование документов на принтере.
 - Работа с мышью.
 - Развитый HELP.
 - Генератор исходных текстов.
 - Возможность переопределения ключевых символов.
 - Автоматическое распознавание монитора, смена режимов его работы.
 - Режимы UNDO, REDO.
 - Возможность размещения редактора в оверлее.
 - Полная совместимость с ранними версиями.
 - Обработка других базовых типов TURBO PASCAL.
