Я бы может и сделал вход для подключения, если бы мне дали интерфейс, и если этот интерфейс простой (не охота заморачиваться с тем, чем я в принципе не пользуюсь).
Вид для печати
У меня даже нет железного ДВК, чтобы подключить к компу и это проверить.
Все просто. Если два порта (или другой комп есть) - замыкается один на другой, запускается любой эмулятор, умеющий работать с COM портом и тестируется.
Без портов - ставится vmware или virtualbox, в нем конфигурится машина с двумя com портами, направленными в named pipe, замыкуаются друг на друга, а далее вариант для двух портов...
Проще - два физических COM порта - тогда не нужно виртуалок :)
Насколько я понял цель - именно работа с COM портами, значит от них (физических или виртуальных) не уйти.
- - - Добавлено - - -
Впрочем вариант подключения через TCP/IP тоже интересен и не требует дополнительных ресурсов.
Titus, самое простое http://com0com.sourceforge.net/ patron его нашел и через него эмулятор тестировал
Заморачиваться надо, но аутентично )) есть проги которые умеют СОМ <-> TCP/IP
Есть программки виртуальных ком-портов. В системе появляется два порта, в программке настраивается какие линии как подключены, и всё, ЭмуСтудио цепляем к одному порту, эмулятор Патрона - к другому. И имеем то что хотели :)
Кстати, эмулятор ДВК с RSXом и DECnetом в нем который уже месяц с чем-то там крутится в HECnet как раз подключен петлей COM портов (правда в виртуальной машине ESXi) :)
На другом конце петли в той же машинке E11 опять таки с RSX, а уже он роутит через ethernet+ip до стакана...
Есть. Платные. А взломанные под восьмеркой уже не идут. Значит надо пробовать бесплатную com0com.
А вообще, пока что мой эмуль не вполне заточен под синхронизацию по таймеру или аудиобуферу. Он синхронизируется по VBlank, что для эмулятора терминала в реальном времени не вполне подходит.
Patron, а в эмуляторе VT52 псевдографика есть?
Есть частичная имитация некоторых символов псевдографики VT52 и VT100 символами шрифта Windows.
Код:if( !St_ANSI )
{
if( bGraphicsMode )
{
if( ch == 'f' ) { ch = '°'; }
else
if( ch == 'j' ) { ch = '‰'; }
else
if( ch == 'g' ) { ch = '±'; }
else
if( ch == 'i' ) { ch = '…'; }
else
if( ch == 0176 ) { ch = '§'; }
}
else
if( nP_ControlCodesType == IE15 )
{
if( ch == '$' ) { ch = '¤'; }
}
}
else
{
bool bGraphics = false;
if( St_RusLat && G1_byte == '0' ){ bGraphics = true; }
else
if( !St_RusLat && G0_byte == '0' ){ bGraphics = true; }
if( bGraphics )
{
switch( ch )
{
case 0137: { ch = ' '; break; }
case 0140: { ch = '®'; break; }
case 'a': { ch = 0xA0; break; }
case 'b': { ch = 'Њ'; break; }
case 'd': { ch = 'Ђ'; break; }
case 'e': { ch = 'Љ'; break; }
case 'f': { ch = '°'; break; }
case 'g': { ch = '±'; break; }
case 'j': { ch = '+'; break; }
case 'k': { ch = '+'; break; }
case 'l': { ch = '+'; break; }
case 'm': { ch = '+'; break; }
case 'n': { ch = '|'; break; }
case 'o': { ch = '~'; break; }
case 'p': { ch = '~'; break; }
case 'q': { ch = '—'; break; }
case 'r': { ch = '—'; break; }
case 's': { ch = '_'; break; }
case 't': { ch = '|'; break; }
case 'u': { ch = '|'; break; }
case 'v': { ch = '+'; break; }
case 'w': { ch = '+'; break; }
case 'x': { ch = '|'; break; }
case 'y': { ch = '«'; break; }
case 'z': { ch = '»'; break; }
case '{': { ch = 'п'; break; }
case '|': { ch = '#'; break; }
case '}': { ch = 'f'; break; }
case '~': { ch = '•'; break; }
}
}
Ндя, немного...
Может, запользовать диапазон 200-237? :)
Просто я пробовал использовать диапазон 200-237 (Strip_8Bit_HighLimit = 0177, шрифт Courier New) но мне ничего не показывалось.. что то делаю не так?
Некоторые старые программы для VT52 посылают управляющие коды с установленным 8 битом - так этот бит можно обрезать до попадания принятого терминалом кода в обработчик управляющих кодов.
Можно запустить с устройства DK игру: Space_Invaders и посмотреть, как работает эмуляция псевдографики VT52.
Не знаю, отобразятся или нет, примеры взяты из System
0x80 (0200) - Ђ
0x81 (0201) - Ѓ
0x86 (0206) - †
VT52 он как бы не совсем ANSI. И что такое CSI - я хорошо знаю.
- - - Добавлено - - -
Собственно, к чему все вопросы - есть ли какие то стандартные возможности рисования символов псевдографики для оформления таблиц или нет. Но я так понимаю - нет.
Всё, что видно здесь - будет точно так же видно и в эмуляторе.
Но для представления каких кодов псевдографики VT52 ( или VT100 ) предлагается использовать эти символы?
- - - Добавлено - - -
В режиме ANSI ( как уже было показано ранее ) доступны коды псевдографики VT100, которых вполне хватает для нормального отображения таблиц :
Код:if( bGraphics )
{
switch( ch )
{
case 0137: { ch = ' '; break; }
case 0140: { ch = '®'; break; }
case 'a': { ch = 0xA0; break; }
case 'b': { ch = 'Њ'; break; }
case 'd': { ch = 'Ђ'; break; }
case 'e': { ch = 'Љ'; break; }
case 'f': { ch = '°'; break; }
case 'g': { ch = '±'; break; }
case 'j': { ch = '+'; break; }
case 'k': { ch = '+'; break; }
case 'l': { ch = '+'; break; }
case 'm': { ch = '+'; break; }
case 'n': { ch = '|'; break; }
case 'o': { ch = '~'; break; }
case 'p': { ch = '~'; break; }
case 'q': { ch = '—'; break; }
case 'r': { ch = '—'; break; }
case 's': { ch = '_'; break; }
case 't': { ch = '|'; break; }
case 'u': { ch = '|'; break; }
case 'v': { ch = '+'; break; }
case 'w': { ch = '+'; break; }
case 'x': { ch = '|'; break; }
case 'y': { ch = '«'; break; }
case 'z': { ch = '»'; break; }
case '{': { ch = 'п'; break; }
case '|': { ch = '#'; break; }
case '}': { ch = 'f'; break; }
case '~': { ch = '•'; break; }
}
}
У меня есть файл, в котором занесены построчно байты в диапазонах (соотвественно - 16 и 8-ричные дипазоны)
первая строка - 0x20-0x3f (0040-0077)
вторая строка - 0x40-0x77 (0100-0177)
третья строка - 0x80-0xBF (0200-0277)
четврт строка - 0xC0-0xFF (0300-0377)
Шрифт - Courier New
Результат - http://www.kpxx.ru/KBAHT4C/Snapshots/vt52.jpg
Кстати, в списке доступных шрифтов System просто не отображается.
Не показанные для примера из System, а те, которые, скажем в шрифте Terminal имеют коды - 0xB0-0xDF (сюда не могу вставить) - те, которые используются для рисования таблиц, например в текстах под MS-DOS.
Пояснение - я сейчас продумываю аналог NC - было бы удобно использовать такие псевдографические символы для рисования правого левого окна в стиле NC, Far. Тут правда встаёт проблема работы на реальных устройствах (ДВК, УКНЦ и т.п.) и эмуляторах - хотя в принципе она решаема - если знать - есть ли эти псевдографические символы - и какие у них коды.
- - - Добавлено - - -
ключевых слов два - некий и минимум. Это значит, если программа выходит за этот некий минимум, предполагая возможности VT100 - она будет слегка или не слегка неработоспособна (в плане отображение картинки).
- - - Добавлено - - -
Я когда искал терминальную программу, эмулирующую VT52 - перепробовал некоторое количество - могу только сказать (по памяти) - что кроме эмулятора VT52 Патрона меня не устроила ни одна (из бесплатных, платные уже не помню), опять же, насколько я помню - все они пытались строить из себя в какой то степени VT100. Но это было давно. Как сейчас обстоят дела - не знаю :)
Имеется в виду, какие символы псевдографики родного VT52 предлагается выводить дополнительно к уже эмулируемым. У родного VT52 нет символов псевдографики для рисования таблиц, поэтому и у его эмулятора - тоже.
У всех разные, а чаще никакие - на это и есть смысл ориентироваться, используя для таблиц обычные символы "|", "-","+",":","#". Такая программа будет одинаково работать на всех терминалах и их эмуляторах.
Аналогично!
Добавлю только, что и среди платных та же история - никто в принципе не умеет эмулировать VT52. То по <ESC>J стирается весь экран, то он вообще не работает то еще что. Перепробовал множество разных.
В памяти ворочается, что вроде ZoC какой-то работал нормально, но... у него функциональные клавиши были F1-F3, а бегать через всю клаву за ними в редакторе как-то не очень :)
Мне доводилось видеть на ДВК примерно такое оформление экранных таблиц:
Код:+-\_DEVICE_/-+
| |
| DK |
| |
+------------+
Это предмет обсуждения :)
Библиотека NDT, на которую я буду ориентироваться, позволяет сделать описание терминала. Всё это можно загнать в него (в описание) (и даже хранить отдельно в виде текстового файла для простоты настройки). Но в Вашем эмуляторе VT-52 можно сделать красивый вариант :)
Матерился я долго и изощрённо, пока не напал на эмулятор Патрона. Жалко, тогда не было эмуляции ВМ3 :) - восстановление бы Кванта начал раньше :)
Пристрелка :)
http://www.kpxx.ru/KBAHT4C/Snapshots/mdc.jpg