Код:
Итак, пойдем по порядку.
Для начала за основу берем CM7209 - он у меня сейчас подключен к 11/83 и в случае чего
легко проверить. Кроме того из тех, что мне попадались, он самый близкий по поведению
к родному VT52.
1. Терминал должен иметь следующие индикаторы (можно менять в зависимости от профиля
или как минимум):
POWER ON - ;)
LINE - Терминал подключен (шлет в порт, принимает из порта). Возможность
переключения в offline - терминал шлет сам себе.
HOLD SCREEN - Терминал в режиме HOLD SCREEN. Никакой связи с простановкой вывода.
AUTO COPY - Включен режим автокопирования на принтер
AALT KEY - Включен режим ALT Keypad
2. Терминал должен уметь посылать BREAK в линию. Варианты: кортокий, до отключения.
На родном VT52 не помню как, на CM7209 к примеру <BREAK> включает отправку,
<SHIFT>+<BREAK> выключает. VT220 у меня просто шлет разовый.
3. Звук на символ <BEL> длинный (запишу звук), регулируется громкость. Кроме того
при печати любого символа в 72 колонке также раздается звук.
4. Нажатие клавиш вызывает клик, писк короткий, громкость регулируется вместе с громкостью
<BEL>.
5. При достижении курсором правой границы экрана перевода строки не происходит. Новый печатный символ печатается поверх старого.
6. Привключении терминал шлет короткий BREAK в линию (возможность отключения - иногда наоборот это мешает), при выключении не обязательно.
7. При получении BREAK терминал печатает символ закраски знакоместа (точки в шахматном порядке, два соседних символа сливаются). То есть пока принимаются символы с ошибкой FRAME ERROR, терминал рисует эти символы. На практике это выглядит как печать строки (целой или частичной) из этих символов при отключении машины к кторой он подцеплен (в том числе если прицепить к PC).
Управление экраном:
<BEL> - собственно он
<BS> - Курсор влево. Если в начале строки - ничего не делать.
<HT> - Установка курсора в ближайшую позицию вперед:
8, 16, 24, ..., 72, 73, 74. 75, 76, 77, 78, 79 (символы по дороге не затираются)
<CR> - Курсов в начало строки.
<LF> - Курсор на строку вниз со скроллингом если в последней строке.
Остальные CTRL-коды никак не отображаются на экране и не выполняют никаких действий.
8 бит отрезается, символ <DEL> ничего не выводит (пока говорим только о профиле CM7209).
Отдельного упоминания стоит <FF> - аналогично - ничего не выводит - это его стандартное поведение на терминале.
<ESC> = - Переключиться в ALT Keypad
<ECS> > - Переключиться в NUM Keypad
<ESC> A - Курсор вверх на строку. Если уже в верхней - ничего не делать.
<ESC> B - Курсор вниз на строку. Если уже в нижней - ничего не делать.
<ESC> C - Курсор вправо. Если в последней колонке - ничего не делать.
<ESC> D - Курсор влево. Если в первой колонке - ничего не делать.
<ESC> F - Включить графику
<ESC> G - Отключить графику
<ESC> H - Курсов в начало экрана
<ESC> I - Курсор на строку вверх. Если в первой - сдвинуть экран вниз.
<ESC> J - Очистить экран от курсора до конца
<ESC> K - Очистка от курсора до конца строки
<ESC> Z - Запрос идентификации терминала
<ESX> Y - Позиционирование курсора. Варианты настроек (не уверен что нужны):
- запредельные координаты игнорить / позиционировать в конец
- позиционировать на первую координату сразу по получении
символа / после получения всей последовательности
- непечатные (CTRL, DEL) символы игнорировать полностью всегда
(в последовательности их не учитывать)
<ESC> [ - Включение режима HOLD SCREEN
<ESC> \ - Отключение.
<ESC> ] - Включение COPY SCREEN - экран отправляется на принтер/лог, в линию шлется <DC3>,
из линии буферизуется и на экран не попадает до окончания, по окончании шлется <DC1>
и включается вывод.
<ESC> ^ - Включить автокопирование на принтер (в лог)
<ESC> - - Отключить (позже почитаю как точно эта фича работает)
Ответ терминала на INQUIRE:
<ESC>/K - VT52 без принтера
<ESC>/L - VT52 с принтером