

      Усовершенствованный Video Attribute Terminal Assembler и Recreator

                          George A. Stanislav

                                 129/39



                          Исторический обзор


Wynn Wagner III, автор CBC опуса, разработал метод хранения
управление видео кодирует в файле, отправленном вызывающей стороне Опуса, которая была предназначена как
замена управляющих кодов ANSI. Его основные преимущества были:

        o коды меньше, чем ANSI, таким образом нуждаясь в меньшем количестве диска
           пространство памяти.

        o коды находятся в двоичной форме, легко интерпретируемой
           компьютер (последовательности ANSI используют ASCII).

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

Из-за отсутствия соответствующего имени Wynn временно назвал коды
oANSI с пониманием, что было необходимо лучшее имя.

Когда я начал работать над своей коммуникационной программой TinyTerm, я имел
идея это, если CBC опуса могли бы отправить коды "oANSI" непосредственно по телефону
строки, это значительно ускорило бы связь. Типичный ANSI
последовательность содержит в 4 раза больше байтов, чем коды, разработанные Wynn
Wagner.

Телефонный вызов Wynn привел к двум вещам: 

        o TinyTerm может интерпретировать коды "oANSI" и перевести
           их к ANSI, затем отправьте их в stdout, где они
           преобразованный в цвета ANSI.SYS.

        o CBC опуса, начиная с гамма версии 1.10.iii, будет
           отправьте коды, не преобразовывая их в последовательности ANSI.
           (Это все еще отправит коды ANSI пользователям без надлежащего
           терминальное программное обеспечение.)

Я принял кодирование части Опуса, обрабатывающего видео коды. Я
реализованный коды предлагали нам намного больше питания, чем просто перевод
их к escape-последовательностям ANSI. Я предложил назвать АВАТАР кодов,
Усовершенствованный Video Attribute Terminal Assembler и Recreator. Wynn с готовностью
принятый новое имя.



                     Два уровня аватара

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

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

Названная система (BBS) отвечает на пакет AVINIT с пакетом этому
сообщает пользователю его текущего статуса, например, можно остаться до 16:30 GMT,
или Вы запрещены доступа, или я обрабатываю почту теперь, но можно перезвонить
в 10:43 GMT, и т.д.

Пока такими пакетами AVINIT не обмениваются, только команды Аватара, которые были
часть исходных кодов oANSI может быть отправлена от BBS до вызывающей стороны.
Программа термина вызывающей стороны не должна отправлять команды Аватара за исключением
из кодов функциональной клавиши, прежде чем обмениваются пакетами AVINIT. Это гарантирует
то, что программа BBS, которая не поддерживает полный Аватар, может все еще взять
преимущество более быстрой передачи видео кодов с помощью Аватара в противоположность
Escape-последовательности ANSI. Это также разрешает вызывающей стороне, программа термина которой делает
не поддерживают полный Аватар, но может интерпретировать абсолютные коды для извлечения выгоды
из способностей программы термина.

Два уровня Аватара затем: полная сессия и основная сессия. Это
документ касается ОСНОВНОЙ сессии Аватара только. Полная сессия
будет определен в отдельном документе.




                       Основные команды аватара


Прежде чем пакетами AVINIT обмениваются, BBS может отправить основной Аватар
команды раз так разрешены выбором пользователя, обычно зарегистрированным в
пользовательский файл данных (например, USER.BBS). Поскольку Аватар является ориентированным окном в a
основную сессию полный экран считают окном по умолчанию. Далее,
цвет по умолчанию окна, как предполагается, 3 (голубой текст на черном цвете
фон). Все байты взяты в их номинальной стоимости без выхода.
Однако сохраните для одного исключения, описанного ниже, никакой основной код Аватара не будет
имейте высокий набор битов. Поэтому термин программа должен сбросить верхний уровень
бит всех байтов за исключением описанного ниже.

Основные команды:

        <^L> - очистите текущее окно и установите текущий атрибут
                        принимать значение по умолчанию. На основной сессии это означает:
                        Очистите экран и установите его атрибут на 3.

        <^Y> - Считайте два байта из модема. Отправьте первый
                        на экран так же много раз как двоичное значение
                        из второго. Это - исключение где
                        два байта могут иметь свой высокий набор битов. Сделать
                        не сбрасывает его здесь!

        <^V> <^A> <attr> - Установите атрибут цвета на <attr>. Значение по умолчанию
                        атрибут остается неизменным. Однако весь текст
                        будет отображен в <attr> до следующего ^V^A,
                        ^V^B или ^L.

        <^V> <^B> - Включите высокий бит текущего атрибута. В
                        другие слова, включите мигание.

        <^V> <^C> - Переместите курсор, который каждый выстраивает в линию. Ничего не сделайте, если Вы
                        уже в верхней строке тока
                        окно.

        <^V> <^D> - Переместите курсор одна строка вниз. Ничего не сделайте если Вы
                        уже в нижней строке тока
                        окно.

        <^V> <^E> - Переместите курсор один столбец налево. Ничего не сделайте
                        если Вы уже в крайнем левом столбце
                        текущее окно.

        <^V> <^F> - Переместите курсор один столбец направо. Ничего не сделайте
                        если Вы уже в крайнем правом столбце
                        текущее окно.

        <^V> <^G> - Ясная остальная часть строки в текущем окне


                        использование текущего атрибута (чтобы не быть перепутанным
                        с атрибутом по умолчанию).

        <^V> <^H> <строка> <седло> - Перемещение курсор к <строка> <седло>
                        положение в текущем окне.


Комментарии:

Текущий атрибут и атрибут по умолчанию являются не обязательно тем же.
Каждый раз, когда окно очищено командой <^L>, текущим атрибутом
сделан равным атрибуту по умолчанию. Существует также другая команда к
сделайте текущий атрибут равным атрибуту по умолчанию. Однако это
команда не является частью основного набора команд Аватара, и поэтому не может
используйтесь, прежде чем пакетами AVINIT обмениваются.

Независимо от того, что символы отправляются в экран, они должны быть отображены с помощью
ТЕКУЩИЙ атрибут. Существует исключение к этому, но только после
Пакетами AVINIT обменялись.

Байт атрибута является восьмиразрядным значением. Поскольку основной Аватар может только передать
7-разрядные команды, высокий бит байта атрибута может быть установлен только
<^V> команда <^B>. <attr> байт команды <^V> <^A> <attr> должен
будьте И-РЕДАКТОРОМ с 7F (шестнадцатеричный). Цвета, выбранные байтом атрибута,
то же, как цвета текстового режима адаптера цветной графики IMB.

Это означает, что биты байта атрибута имеют следующее значение:

     бит: 7 6 5 4 3 2 1 0
                  - - - - - - - -
                  | | | | |
                  | | | | |
                  | +---+---+ +-----+-----+
                  | | |
                  | | |
                  | |
                  | | цвет текста
                  | |
                  |
                  | цвет фона
                  |

                мигание

Если мигание укусило, установлен, текст мигает, еще это не мигает.

Биты цвета фона могут иметь значения 0 - 7, биты текста
цвет может иметь значения 0 - 15. Значение указывает на следующие цвета:

                 0 черных
                 1 синее
                 2 зеленых
                 3 голубых


                 4 красных
                 5 пурпурных
                 6 коричневых
                 7 серых (т.е. non-itense белый)
                 8 темно-серых
                 9 голубых
                10 светло-зеленых
                11 светло-голубых
                12 светло-красных
                13 светло-красных
                14 желтых
                15 (интенсивных) белых

Цвета 8 - 15 совпадают с 0 - 7, но с высокой интенсивностью.

Обратите внимание на то, что эти значения отличаются от чисел, используемых ANSI
управляющие коды.






                     Коды функциональной клавиши



Аватар способный BBS может принять функциональные клавиши от удаленной вызывающей стороны.
Эта функция является дополнительной (для термина программа), но настоятельно рекомендованный.

На IBM (совместимый) компьютер это означает это, если вызывающая сторона поражает функцию
ключ (например, стрелка влево, страница, F7, вставляет, alt-H, и т.д.), термин программа
должен отправить два байта в Аватар способный BBS: двоичный нуль, сопровождаемый
клавиатура scancode. Обратите внимание на то, что клавиши CTRL (^A, ^B, и т.д.) не
функциональные клавиши, но имеют значение ASCII, которое является единственным байтом, который должен быть
переданный.

Существуют два, включает клавиатуру IBM, которые действительно имеют значение ASCII, но также и
предложите отдельный скэн-код. Это серо-плюс и серо-минус. Если
одна из этих клавиш нажата, рассматривайте, она как функциональная клавиша - отправляет двоичный нуль
сопровождаемый скэн-кодом. Таким образом, если BBS рассматривает их по-другому по сравнению с a
регулярные клавиши "плюс" и "минус", вызывающая сторона может использовать в своих интересах ключи.
С другой стороны, писатели BBS, которые не хотят присваивать серые ключи
специальное значение, должно наблюдать за их кодами и рассматривать их как постоянного клиента
плюс и минус.

Системы, которые используют другую раскладку клавиатуры (и скэн-коды), чем IBM, могут
эмулируйте IBM путем объявления, какие ключи считают стрелками, f-ключами, и т.д.
Если у Вас есть клавиши со стрелками, например, но их скэн-коды отличаются,
все еще отправьте двоичный нуль и скэн-код, что клавиатура IBM была бы
присвойте тому конкретному ключу. Это должно быть очевидно для пользователя.



Здесь существует очевидная проблема. Все терминальные программы я видел использование
функциональные клавиши внутренне. Переключатель необходим так, пользователь может решить ли
функциональная клавиша предназначена для внутреннего пользования термина программа или это
должен быть передан BBS. Большинство, но не все клоны IBM имеет прокрутку
заблокируйте ключ, у некоторых даже есть светодиодный индикатор на нем. Программы IBM могли использовать
это как переключатель для знания то, что пользователь подразумевает под нажатием функциональной клавиши.
Так как некоторые совместимые устройства не имеют клавиши Scroll Lock (например, Tandy 1000),
Аватар способный BBS никогда не должен ожидать <сдвиг> <F1> комбинация быть
переданный. Тем путем термин программа может использовать <смещаются> <F1> для переключения между
локальное и удаленное использование функциональных клавиш, если клавиша Scroll Lock не
доступный.
