Здесь это не сильно удобно ибо то, что светится никак не связано с тем, что нажато.
Регистр на запись - это лампочки, регистр на чтение - состояние переключателей.
Вид для печати
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_04.09.17_12-43
Изменения:
1. В модуль CPU11_module.em добавлен объект SwitchReg, реализующий регистр лампочек и переключателей по адресу 177570. Добавлены файлы конфигурации VM2+SWR.cfg и VM3+SWR.cfg с примерами использования.
2. Улучшена эмуляция контроллера DW - теперь регистр по адресу 174002 отвечает на шине и всегда возвращает ноль.
...
Было напряжно делать специальный виджет, поэтому устройство на шине просто имеет по 16 входных и выходных State-переменных для подключения обычных кнопок.
Кнопки "лампочек" в конфигах с примерами реализованы объектами SBPC_StateFlashButton со следующими настройками:
Код:[Lamp0.ini]
ButtonPushMode=0 ; Кнопку нельзя нажать.
IsInverted=0
ButtonON_Text=1 ; Текст кнопки в состоянии ON - можно заменить на " " - тогда текста не будет.
ButtonOFF_Text=0 ; Текст кнопки в состоянии OFF - можно заменить на " " - тогда текста не будет.
StateName=In00 ; Кнопка подключается к состоянию: In00
LightsOFF_StateName=Power
ButtonWidth=18 ; Ширина кнопки.
ButtonHeight=18
ButtonFontSize=12 ; Размер шрифта текста кнопки.
ButtonFontWeight=600 ; Жирность шрифта текста кнопки.
PushedButton_Text_X_Offset_Px=0
PushedButton_Text_Y_Offset_Px=2 ; Вертикальное смещение текста в состоянии ON
PoppedButton_Text_X_Offset_Px=0
PoppedButton_Text_Y_Offset_Px=2 ; Вертикальное смещение текста в состоянии OFF
ButtonON_TextColor =0,0,0 ; Цвет текста кнопки в состоянии ON
ButtonOFF_TextColor=0,0,0 ; Цвет текста кнопки в состоянии OFF
ButtonON_Background = 160,228,160 ; Цвет фона кнопки в состоянии ON
ButtonOFF_Background = 150,160,155 ; Цвет фона кнопки в состоянии OFF
Is_PoppedButton_Border_ButtonLike=0 ; В состоянии ON кнопка плоская.
Is_PushedButton_Border_ButtonLike=0 ; В состоянии OFF кнопка плоская.
DoCenterAlignButtonText=1 ; Текст кнопки центрируется по горизонтали.
Можно изменить настройки для имитации зелёных или красных лампочек:
Код:[Lamp0.ini]
ButtonPushMode=0
IsInverted=0
ButtonON_Text =©
ButtonOFF_Text=©
StateName=In00
LightsOFF_StateName=Power
ButtonWidth=18
ButtonHeight=18
ButtonFontSize=18
ButtonFontWeight=600
PushedButton_Text_X_Offset_Px=0
PushedButton_Text_Y_Offset_Px=1
PoppedButton_Text_X_Offset_Px=0
PoppedButton_Text_Y_Offset_Px=2
ButtonON_TextColor = 120,255,120
ButtonOFF_TextColor= 120,130,125
ButtonON_Background = 150,160,155
ButtonOFF_Background = 150,160,155
Is_PoppedButton_Border_ButtonLike=0
Is_PushedButton_Border_ButtonLike=0
DoCenterAlignButtonText=1
Код:[Lamp0.ini]
ButtonPushMode=0
IsInverted=0
ButtonON_Text =©
ButtonOFF_Text=©
StateName=In00
LightsOFF_StateName=Power
ButtonWidth=18
ButtonHeight=18
ButtonFontSize=18
ButtonFontWeight=600
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 = 255,80,80
ButtonOFF_TextColor= 120,130,125
ButtonON_Background = 140,150,145
ButtonOFF_Background = 140,150,145
Is_PoppedButton_Border_ButtonLike=0
Is_PushedButton_Border_ButtonLike=0
DoCenterAlignButtonText=1
Готовые конфиги для зелёных и красных лампочек: VM3+SWR(green&red).zip
..
Ещё одна тонкость. Если в настройке цвета фона кнопки указать: 1,0,0 - для фона будет использован текущий системный стиль оформления.
Код:ButtonOFF_Background = 1,0,0
Еще предложение по HD. Добавить команду "получить дату и время", которой бы передавался параметр "адрес буфера" (с использованием расширения адреса, конечно), в который бы возвращалось все в таком формате:Первая часть - стандартный формат GTIM$/STIM$ в RSX, вторая - стандартный формат .SDTTM в RT-11. Или можно разделить на две команды чтобы возвращала в том или другом формате (но тогда для RT-11 надо отдельно передавать количество тиков в секунду).Код:+0 год-1900
+2 месяц
+4 день
+6 час
+10 минута
+12 секунда
+14 тики до секунды
+16 тиков в секунду
+20 дата в формате RT-11
+22 время в формате RT-11 (hi)
+24 время в формате RT-11 (lo)
У RSTS/E вроде есть способ передачи даты-времени при загрузке.
У RSX передавать некуда: грузится образ памяти вплоть до полного размера.
- - - Добавлено - - -
Еще как вариант с автонастройкой даты-времени можно сделать псевдо-TOY в стиле KDJ11-E (получится устройство из одного бита на шине). RSX так не обманешь: он прежде чем проверить его наличие тестирует тип процессора (хотя есть сторонние программы), а вот в RT-11 V5.6 и 5.7 устройство NL: при инсталяции тупо читает 177526 если он есть не задаваясь вопросом откуда :)
Ну и DATE у меня не напрягается проверкой типа модуля, делает только минимальную проверку, что читает KDJ11-E или M100 TOY.