Пока образ файла не выбран - передача не начнётся. Программная задержка при передаче между отдельными байтами не поддерживается.
Вид для печати
Загрузка на реальных эл.60 двк-1,2 прошла успешно спасибо большое за обновления (размер софта прошедшего загрузку через binsender 1000-157600)
Единственный неочевидный момент, с которым я сам столкнулся, когда сейчас попробовал объединить эти два конфига, чтобы добавить кнопки сигналов COM-порта из конфига COM_4.cfg в конфиг HX_COM.cfg - нужно в настройках объекта VT52 в секции [VT52.ini] - включить отображение собственной полосы статуса окна вкладки терминала, на которую по умолчанию и прикрепляются кнопки, для чего найти в конфиге HX_COM.cfg в секции [VT52.ini] параметр InitialStateOf[StatusBar] и установить его в 1:Цитата:
Сообщение от mig_25
Код:[VT52.ini]
InitialStateOf[StatusBar] = 1
SaveChangesFor[StatusBar] = 0
Помимо этого, чтобы добавить кнопки сигналов COM-порта из конфига COM_4.cfg в конфиг HX_COM.cfg нужно (в конфиге HX_COM.cfg) сделать следующее:
1. Добавить создание кнопок в раздел [objects]:
Код:[objects]
In_CTS = Ядро:SB_StateFlashButton
In_DSR = Ядро:SB_StateFlashButton
In_BRK = Ядро:SB_StateFlashButton
In_DCD = Ядро:SB_StateFlashButton
In_RNG = Ядро:SB_StateFlashButton
Out_RTS = Ядро:SB_StateFlashButton
Out_DTR = Ядро:SB_StateFlashButton
Out_BRK = Ядро:SB_StateFlashButton
2. Подключить кнопки к COM-порту и окну вкладки терминала в разделе [links]
Код:[links]
VT52 + ( In_CTS + ComPort ) | ( In_DSR + ComPort ) | ( In_BRK + ComPort )
VT52 + ( In_DCD + ComPort ) | ( In_RNG + ComPort )
VT52 + ( Out_RTS + ComPort ) | ( Out_DTR + ComPort ) | ( Out_BRK + ComPort )
3. Добавить в конец файла конфига разделы с настройками для каждой кнопки:
Код:; === INI SECTIONS ===
[In_CTS.ini]
SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=0
IsInverted=0
ButtonON_Text=CTS
ButtonOFF_Text=CTS
StateName=In_CTS
LightsOFF_StateName=
ButtonWidth=34
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=400
PushedButton_Text_X_Offset_Px=0
PushedButton_Text_Y_Offset_Px=2
PoppedButton_Text_X_Offset_Px=0
PoppedButton_Text_Y_Offset_Px=2
ButtonON_TextColor=0,0,0
ButtonOFF_TextColor=0,0,0
ButtonON_Background=160,205,160
ButtonOFF_Background=1,0,0
Is_PoppedButton_Border_ButtonLike=0
Is_PushedButton_Border_ButtonLike=0
DoCenterAlignButtonText=1
[In_DSR.ini]
SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=0
IsInverted=0
ButtonON_Text=DSR
ButtonOFF_Text=DSR
StateName=In_DSR
LightsOFF_StateName=
ButtonWidth=34
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=400
PushedButton_Text_X_Offset_Px=0
PushedButton_Text_Y_Offset_Px=2
PoppedButton_Text_X_Offset_Px=0
PoppedButton_Text_Y_Offset_Px=2
ButtonON_TextColor=0,0,0
ButtonOFF_TextColor=0,0,0
ButtonON_Background=160,205,160
ButtonOFF_Background=1,0,0
Is_PoppedButton_Border_ButtonLike=0
Is_PushedButton_Border_ButtonLike=0
DoCenterAlignButtonText=1
[In_BRK.ini]
SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=0
IsInverted=0
ButtonON_Text=BRK
ButtonOFF_Text=BRK
StateName=In_BRK
LightsOFF_StateName=
ButtonWidth=34
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=400
PushedButton_Text_X_Offset_Px=0
PushedButton_Text_Y_Offset_Px=2
PoppedButton_Text_X_Offset_Px=0
PoppedButton_Text_Y_Offset_Px=2
ButtonON_TextColor=0,0,0
ButtonOFF_TextColor=0,0,0
ButtonON_Background=230,140,140
ButtonOFF_Background=1,0,0
Is_PoppedButton_Border_ButtonLike=0
Is_PushedButton_Border_ButtonLike=0
DoCenterAlignButtonText=1
[In_DCD.ini]
SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=0
IsInverted=0
ButtonON_Text=DCD
ButtonOFF_Text=DCD
StateName=In_DCD
LightsOFF_StateName=
ButtonWidth=34
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=400
PushedButton_Text_X_Offset_Px=0
PushedButton_Text_Y_Offset_Px=2
PoppedButton_Text_X_Offset_Px=0
PoppedButton_Text_Y_Offset_Px=2
ButtonON_TextColor=0,0,0
ButtonOFF_TextColor=0,0,0
ButtonON_Background=160,205,160
ButtonOFF_Background=1,0,0
Is_PoppedButton_Border_ButtonLike=0
Is_PushedButton_Border_ButtonLike=0
DoCenterAlignButtonText=1
[In_RNG.ini]
SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=0
IsInverted=0
ButtonON_Text=RNG
ButtonOFF_Text=RNG
StateName=In_RNG
LightsOFF_StateName=
ButtonWidth=34
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=400
PushedButton_Text_X_Offset_Px=0
PushedButton_Text_Y_Offset_Px=2
PoppedButton_Text_X_Offset_Px=0
PoppedButton_Text_Y_Offset_Px=2
ButtonON_TextColor=0,0,0
ButtonOFF_TextColor=0,0,0
ButtonON_Background=160,205,160
ButtonOFF_Background=1,0,0
Is_PoppedButton_Border_ButtonLike=0
Is_PushedButton_Border_ButtonLike=0
DoCenterAlignButtonText=1
[Out_RTS.ini]
SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=2
IsInverted=0
ButtonON_Text=RTS
ButtonOFF_Text=RTS
StateName=Out_RTS
LightsOFF_StateName=
ButtonWidth=34
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=600
PushedButton_Text_X_Offset_Px=4
PushedButton_Text_Y_Offset_Px=2
PoppedButton_Text_X_Offset_Px=3
PoppedButton_Text_Y_Offset_Px=1
ButtonON_TextColor=0,0,0
ButtonOFF_TextColor=0,0,0
ButtonON_Background=160,205,160
ButtonOFF_Background=1,0,0
Is_PoppedButton_Border_ButtonLike=1
Is_PushedButton_Border_ButtonLike=1
DoCenterAlignButtonText=0
[Out_DTR.ini]
SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=2
IsInverted=0
ButtonON_Text=DTR
ButtonOFF_Text=DTR
StateName=Out_DTR
LightsOFF_StateName=
ButtonWidth=34
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=600
PushedButton_Text_X_Offset_Px=4
PushedButton_Text_Y_Offset_Px=2
PoppedButton_Text_X_Offset_Px=3
PoppedButton_Text_Y_Offset_Px=1
ButtonON_TextColor=0,0,0
ButtonOFF_TextColor=0,0,0
ButtonON_Background=160,205,160
ButtonOFF_Background=1,0,0
Is_PoppedButton_Border_ButtonLike=1
Is_PushedButton_Border_ButtonLike=1
DoCenterAlignButtonText=0
[Out_BRK.ini]
SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=2
IsInverted=0
ButtonON_Text=BRK
ButtonOFF_Text=BRK
StateName=Out_BRK
LightsOFF_StateName=
ButtonWidth=34
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=600
PushedButton_Text_X_Offset_Px=4
PushedButton_Text_Y_Offset_Px=2
PoppedButton_Text_X_Offset_Px=3
PoppedButton_Text_Y_Offset_Px=1
ButtonON_TextColor=0,0,0
ButtonOFF_TextColor=0,0,0
ButtonON_Background=230,140,140
ButtonOFF_Background=1,0,0
Is_PoppedButton_Border_ButtonLike=1
Is_PushedButton_Border_ButtonLike=1
DoCenterAlignButtonText=0
Patron, огромное спасибо, будем пробовать!
https://pic.maxiol.com/thumbs2/17201...bmrksfilkn.png
.
Обновилась текущая сборка эмулятора терминала типа VT52: VT52_14.10.24_16-45
Изменения:
1. Теперь объект Terminal_ComPort_Adapter следит за отключением/подключением соединения USB-serial, закрывая и снова открывая виртуальный COM-порт. Благодаря этому эмулятор терминала больше не надо перезапускать при перетыкании кабеля USB или при перезагрузке контроллера USB-serial.
2. Объекту Terminal_ComPort_Adapter добавлена настройка PortOpen_ANSI_STR, позволяющая адаптеру COM-порта отправлять в порт один или несколько байтов при каждом открытии (и переоткрытии) порта.
Например так:
Код:[ComPort.ini]
PortName="COM3"
BaudRate = CBR_256000
PortOpen_ANSI_STR="\005"
.
Обновилась текущая сборка эмулятора терминала типа VT52: VT52_08.11.24_12-48
При подключении адаптера COM-порта к виртуальным COM-портам Windows обнаружилось, что если USB-устройство передаёт VID_0483, PID_5740 и поэтому обслуживается стандартным драйвером Windows USB-serial - объект адаптера COM-порта вместо загрузки процессора 0% создаёт загрузку 100%.
Изменения:
1. Теперь при подключении адаптера COM-порта к виртуальным COM-портам USB-serial, созданным стандартным драйвером Windows - загрузка процессора составляет 0%, а не 100%, как во всех предыдущих версиях эмулятора.
У терминала есть состояние Power, которое при обнулении очищает экран, поэтому в любой конфиг с терминалом можно добавить кнопку очистки экрана.
Для этого нужно следующее:
1. Создать объект кнопки (для кнопки без подсветки - SB_StatePushButton, а для кнопки с подсветкой - SB_StateFlashButton):
Код:[objects]
CLS_Button = Ядро:SB_StatePushButton
2. Задать параметры кнопки в секции конфига с именем объекта кнопки:
Главное здесь:Код:[CLS_Button.ini]
SB_Part_Data=nPosition[-1] | nPriority[7] | bHidden[0]
TextFieldWidth_Px=0
TextFieldText=
ButtonPushMode=1
IsInverted=1
ButtonON_Text= CLS
ButtonOFF_Text=CLS
StateName=Power
ButtonWidth=40
ButtonHeight=18
ButtonFontSize=12
ButtonFontWeight=600
StateName=Power - кнопка управляет состоянием Power,
IsInverted=1 - при не нажатой кнопке состояние "включено".
ButtonPushMode=1 - кнопка без фиксации,
nPosition[-1] | nPriority[7] - позиция: крайняя справа, сдвигать из этой позиции кнопки с приоритетом ниже 7.
3. Подключить кнопку к состоянию Power объекта VT52 и посадить кнопку на интересующую полосу виджетов.
Код:[links]
Config + CLS_Button + VT52
Для моего конфига результат получился такой:
https://emulator.pdp-11.org.ru/pics/COM_12_1.png
Кнопка села на полосу [StatusBar] объекта Config. Если при размещении кнопки не указывается конкретная полоса виджетов - кнопка садится на полосу [StatusBar] заданного объекта.
Поэтому, если написать в конфиге так:
Кнопка сядет на полосу [StatusBar] объекта VT52.Код:[links]
VT52 + CLS_Button + VT52
[VT52.ini]
InitialStateOf[StatusBar] = 1
Скрытый текст
Другие варианты:
Полоса [ControlBar] объекта Config:
Код:[links]
Config[ControlBar] + CLS_Button + VT52
[Config.ini]
InitialStateOf[ControlBar] = 1
Скрытый текст
Полоса [ControlBar] объекта VT52:
Код:[links]
VT52[ControlBar] + CLS_Button + VT52
[VT52.ini]
InitialStateOf[ControlBar] = 1
Скрытый текст
Полоса [TerminalStatusBar] объекта VT52:
https://emulator.pdp-11.org.ru/pics/COM_12_5.pngКод:[links]
VT52[TerminalStatusBar] + CLS_Button + VT52
Можно отметить, что кнопке CLS не удалось вытеснить кнопку RUS/LAT из крайней правой позиции. Причина этого в том, что в файле Terminal.ini для кнопки RUS/LAT задан приоритет 8:
Код:TerminalStatusBar_Part[RUS/LAT] = nPosition[-1] | nPriority[8] | bHidden[0]
Архив со всеми вариантами использованных конфигов: COM_12_x.cfg.zip
Patron, Добрый день.
Интересно было бы добавление служебной строки как в 15ИЭ-00-013, правда туда придется приделать таймер. Или как в КСМ.
Спасибо.
Любопытный факт про табуляции (из DECscope User's Manual, стр. 20)
Если курсор находится в колонках 73-79 (из 1-80), он передвигается на 1 колонку вправо. 15ИЭ и КСМ так и делают. VT240, СМ7238 (в режиме VT52) -- нет.
Из колонки 80 курсор не двигается (нет automatic wrap), а в клонах -- есть:
15ИЭ: разряд 2 группы IV -- это "фиксация маркера в крайних положениях строки (только для системы команд N2) (0 - нет, 1 - есть)", но похоже, что это не работает (autowrap всегда включен).
КСМ -- настраивается разрядом 5 (по умолчанию 1 == выключен) и работает.