Важная информация

User Tag List

Страница 2 из 183 ПерваяПервая 123456 ... ПоследняяПоследняя
Показано с 11 по 20 из 1821

Тема: Эмулятор ДВК

  1. #11
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Эмулятор терминала. 2. Настройки клавиатуры.

    Эмулятор терминала.

    2. Настройки клавиатуры.
    ------------------------------


    Базовые параметры объектов типа Terminal находятся в ini-файле класса - Terminal.ini.

    Любой из этих параметров может быть переопределён для конкретного экземпляра объекта типа Terminal в ini-секции такого объекта в файле конфигурации.

    Например.

    В файле Terminal.ini из комплекта поставки эмулятора для клавиши <F12> задана такая подставляемая строка:
    Код:
    ANSI_STR_FOR_KEY[F12] = "F12 "
    А в секции [VT52.ini] файла default.cfg такая:
    Код:
    ANSI_STR_FOR_KEY[F12] = "f12 "
    Запустив эмулятор в конфигурации по-умолчанию и нажав клавишу <F12> можно проверить, какая из подстановок будет выполнена.

    Всего можно определить в файле Terminal.ini и переопределить в ini-секциях объектов типа Terminal в файлах конфигурации подставляемые строки для следующих клавиш:
    Код:
    ANSI_STR_FOR_KEY[F1]  = "Help me !!! "
    ANSI_STR_FOR_KEY[F2]  = "Dir\015"
    ANSI_STR_FOR_KEY[F3]  = "F3 "
    ANSI_STR_FOR_KEY[F4]  = "F4 "
    ANSI_STR_FOR_KEY[F5]  = "\033g"
    ANSI_STR_FOR_KEY[F6]  = "\033h"
    ANSI_STR_FOR_KEY[F7]  = "\033S"
    ANSI_STR_FOR_KEY[F8]  = "\033c"
    ANSI_STR_FOR_KEY[F9]  = "\033\024"
    ANSI_STR_FOR_KEY[F10] = "\033\010"
    ANSI_STR_FOR_KEY[F11] = "\033\023"
    ANSI_STR_FOR_KEY[F12] = "F12 "
    
    ANSI_STR_FOR_KEY[Insert]   = "\033P"
    ANSI_STR_FOR_KEY[Delete]   = "\033e"
    ANSI_STR_FOR_KEY[Home]     = "\033Q"
    ANSI_STR_FOR_KEY[End]      = "\033f"
    ANSI_STR_FOR_KEY[PageUp]   = "\033R"
    ANSI_STR_FOR_KEY[PageDown] = "\033d"
    
    ANSI_STR_FOR_KEY[PF1]       = "\033P"
    ANSI_STR_FOR_KEY[Pad_Slash] = "\033Q"
    ANSI_STR_FOR_KEY[Pad_Star]  = "\033R"
    ANSI_STR_FOR_KEY[Pad_Minus] = "\033S"
    ANSI_STR_FOR_KEY[Pad_Plus]  = "\012"
    
    ANSI_STR_FOR_KEY[LCtrl] = "\016"
    ANSI_STR_FOR_KEY[RCtrl] = "\017"
    ANSI_STR_FOR_KEY[LWin]  = "\016"
    ANSI_STR_FOR_KEY[RWin]  = "\017"
    ANSI_STR_FOR_KEY[LAlt]  = "\016"
    ANSI_STR_FOR_KEY[RAlt]  = "\017"
    
    ANSI_STR_FOR_KEY[Apps]  = "\012"
    Легко заметить, что в конфигурации по-умолчанию - клавиши <Ctrl>, <Win> и <Alt>, расположенные слева от пробела - генерят код перехода на русский регистр ( 016 ), а расположенные справа - код перехода на латинский регистр ( 017 ).

    Клавиша <Apps> генерит по-умолчанию код LF ( 012 ).

    Код, назначенный для клавиши PF1 :
    Код:
    ANSI_STR_FOR_KEY[PF1]       = "\033P"
    генерится при нажатии на клавишу <Num Lock>, но только в том случае, если параметр Use_NumLock_as_PF1 имеет действующее значение 1.

    По умолчанию параметры управления клавиатурой таковы:
    Код:
    KeyboardControlling = 1
    NumLockControlling  = 1
    NumpadSwapping      = 1
    Use_NumLock_as_PF1  = 0
    Параметр KeyboardControlling разрешает или запрещает терминалу имитировать нажатия на клавиши <Num Lock>, <Caps Lock> и <Scroll Lock>.

    Параметр NumLockControlling позволяет выборочно запретить терминалу имитировать нажатия на клавишу <Num Lock>.

    Параметр NumpadSwapping отвечает за имитацию эмулятором терминала - цифрового и дополнительного клавиатурных блоков терминала 15ИЭ-00-013. При имитации терминала VT52 этот параметр лучше установить в 0, а при имитации 15ИЭ-00-013 - в 1.

    Если NumpadSwapping = 1, то при включенном <Num Lock> - KEYPAD PC-шной клавиатуры имитирует NUMPAD терминалов VT52 и 15ИЭ-00-013, а стрелки PC-шной клавиатуры - имитируют стрелки терминалов VT52 и 15ИЭ-00-013 ( режим по-умолчанию ), тогда как при выключенном <Num Lock> - KEYPAD PC-шной клавиатуры имитирует KEYPAD клавиатуры 15ИЭ-00-013 ( отсутствующий у VT52 ), а стрелки PC-шной клавиатуры - имитируют клавиши 4, 5, 6 и 8 NUMPAD.

    Поскольку большинство динамичных игр для PDP-11 управляются клавишами 4, 5, 6 и 8 NUMPAD - выключив <Num Lock> в режиме NumpadSwapping = 1 - можно передать эти функции стрелкам.

    Но главное в том, что большинство программ для ДВК управляются кодами клавиш KEYPAD клавиатуры 15ИЭ-00-013. Поэтому, при выключенном <Num Lock> в режиме NumpadSwapping = 1 такие программы можно использовать более привычным и естественным образом.

    ...

    В окне терминала клавиши <Alt>, <F10>, <Win> и <Apps> не выполняют своих системных функций, а генерят коды наравне с другими клавишами.

    Клавиши <Ctrl> генерят назначенные им коды только при одиночном нажатии, тогда как при нажатии совместно с другими клавишами - обеспечивают генерацию управляющих кодов.

    В режиме KeyboardControlling = 1:

    1. При каждом получении фокуса ввода окном объекта типа Terminal - объект запоминает текущее состояние параметров <Num Lock>, <Caps Lock> и <Scroll Lock> клавиатуры и восстанавливает свой контекст, а при потере фокуса - осуществляет обратную операцию.

    Каждый экземпляр терминала имеет свой собственный контекст состояний клавиатуры.

    2. Одиночное нажатие на левую клавишу <Shift> всегда устанавливает <Caps Lock>, а одиночное нажатие на правую клавишу <Shift> - всегда сбрасывает <Caps Lock>.

    3. Последовательные нажатия на клавишу <Scroll Lock> посылают в выходной поток коды <Ctrl/S> и <Ctrl/Q>.
    Последний раз редактировалось Patron; 16.03.2012 в 21:47.

  2. #12
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Эмулятор терминала. 3. Настройки цвета.

    Эмулятор терминала.

    3. Настройки цвета.
    -----------------------


    Базовые параметры класса Terminal, определяемые в файле Terminal.ini и переопределяемые ( при необходимости ) в ini-секциях объектов типа Terminal в файлах конфигурации:

    Код:
    TerminalTextColor_RGB       = 0,0,0
    FrameBackgroundColor_RGB    = 178,178,178
    TerminalBackgroundColor_RGB = 170,204,221
    позволяют настроить цвет текста и фона в окне терминала.

    Например, такие настройки:

    Код:
    TerminalTextColor_RGB       = 44,220,86
    FrameBackgroundColor_RGB    = 125,130,140
    TerminalBackgroundColor_RGB = 42,46,44
    дадут такой результат:




    Tакие настройки:

    Код:
    TerminalTextColor_RGB       = 150,200,240
    FrameBackgroundColor_RGB    = 172,170,160
    TerminalBackgroundColor_RGB = 50,60,55
    дадут такой результат:



    А такие настройки:

    Код:
    TerminalTextColor_RGB       = 230,210,120
    FrameBackgroundColor_RGB    = 145,140,135
    TerminalBackgroundColor_RGB = 48,44,58
    дадут такой результат:



    ...
    Последний раз редактировалось Patron; 16.03.2012 в 21:46.

  3. #13
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Эмулятор терминала. 4. Настройки курсора.

    Эмулятор терминала.

    4. Настройки курсора.
    --------------------------


    Базовые параметры класса Terminal, определяемые в файле Terminal.ini и переопределяемые ( при необходимости ) в ini-секциях объектов типа Terminal в файлах конфигурации:

    Код:
    CURSOR_Y_START_% = 0
    CURSOR_X_START_% = 0
    CURSOR_Y_END_% = 100
    CURSOR_X_END_% = 100
    CURSOR_BLINK_ON_TIME_MS  = 800
    CURSOR_BLINK_OFF_TIME_MS = 300
    позволяют настроить вид и "поведение" курсора.

    Когда окно объекта типа Terminal получает фокус ввода - курсор начинает "моргать" с периодами включения и выключения, задаваемыми ( в миллисекундах ) параметрами CURSOR_BLINK_ON_TIME_MS и CURSOR_BLINK_OFF_TIME_MS.

    ...

    Изменяя начальное и конечное значения строки и столбца отображения курсора в матрице символа - можно в широких пределах менять его форму.

    По умолчанию курсор занимает всё знакоместо, но в разделе [VT52.ini] файла default.cfg - значения, определяющие форму курсора, переопределяются следующим образом:

    Код:
    CURSOR_Y_START_% = 85
    В результате курсор меняет форму с такой: на такую .

    ...

    Если же вместо "CURSOR_Y_START_% = 85" использвать такое значение:
    Код:
    CURSOR_X_END_% = 15
    то результат будет таким:
    Последний раз редактировалось Patron; 16.03.2012 в 21:48.

  4. #14
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Эмулятор терминала. 5. Настройки полосы статуса внутреннего окна.

    Эмулятор терминала.

    5. Настройки полосы статуса внутреннего окна.
    --------------------------------------------------------


    Строка
    Код:
    InitialStateOf[TerminalStatusBar]= 1
    в секции [VT52.ini] файла default.cfg ( как и в секции любого другого объекта типа Terminal в любом другом файле конфигурации ) управляет показом полосы статуса внутреннего окна эмулятора терминала.

    Если установить это значение в 0, то результат будет таким:

    Скрытый текст

    [свернуть]


    ...

    Базовые параметры класса Terminal, определяемые в файле Terminal.ini и переопределяемые ( при необходимости ) в ini-секциях объектов типа Terminal в файлах конфигурации:
    Код:
    TerminalStatusBar_Part[RUS/LAT]  = nPosition[-1] ; nPriority[8] ; bHidden[0]
    TerminalStatusBar_Part[GoldMode] = nPosition[-2] ; nPriority[0] ; bHidden[0]
    TerminalStatusBar_Part[Log]      = nPosition[-3] ; nPriority[4] ; bHidden[0]
    
    TerminalStatusBar_Part[Font]     = nPosition[4] ; nPriority[7] ; bHidden[0]
    TerminalStatusBar_Part[BPS]      = nPosition[3] ; nPriority[5] ; bHidden[0]
    TerminalStatusBar_Part[CPS_Limit]= nPosition[2] ; nPriority[6] ; bHidden[0]
    TerminalStatusBar_Part[CPS]      = nPosition[1] ; nPriority[3] ; bHidden[0]
    позволяют настроить положение и присутствие конкретных контролов (виджетов) на полосе статуса терминала.

    Виджеты с отрицательными номерами позиции - выравниваются вправо, а с положительными - влево.

    Если изменить номера их позиций вот так:

    Код:
    TerminalStatusBar_Part[RUS/LAT]  = nPosition[1] ; nPriority[8] ; bHidden[0]
    TerminalStatusBar_Part[GoldMode] = nPosition[2] ; nPriority[0] ; bHidden[0]
    TerminalStatusBar_Part[Log]      = nPosition[3] ; nPriority[4] ; bHidden[0]
    
    TerminalStatusBar_Part[Font]     = nPosition[-4] ; nPriority[7] ; bHidden[0]
    TerminalStatusBar_Part[BPS]      = nPosition[-3] ; nPriority[5] ; bHidden[0]
    TerminalStatusBar_Part[CPS_Limit]= nPosition[-2] ; nPriority[6] ; bHidden[0]
    TerminalStatusBar_Part[CPS]      = nPosition[-1] ; nPriority[3] ; bHidden[0]
    то результат окажется таким:

    Скрытый текст

    [свернуть]


    Параметр bHidden каждого виджета управляет разрешением/запретом его отображения. Чтобы не слишком нужные виджеты перестали "засорять" полосу статуса - их параметры bHidden можно установить в 1.

    В итоге, следующие (например) настройки:

    Код:
    TerminalStatusBar_Part[RUS/LAT]  = nPosition[-1] ; nPriority[8] ; bHidden[0]
    TerminalStatusBar_Part[GoldMode] = nPosition[-2] ; nPriority[0] ; bHidden[0]
    TerminalStatusBar_Part[Log]      = nPosition[-3] ; nPriority[4] ; bHidden[0]
    
    TerminalStatusBar_Part[Font]     = nPosition[4] ; nPriority[7] ; bHidden[1]
    TerminalStatusBar_Part[BPS]      = nPosition[3] ; nPriority[5] ; bHidden[0]
    TerminalStatusBar_Part[CPS_Limit]= nPosition[2] ; nPriority[6] ; bHidden[0]
    TerminalStatusBar_Part[CPS]      = nPosition[1] ; nPriority[3] ; bHidden[1]
    дадут такой результат:

    Скрытый текст

    [свернуть]

    ...
    P.S.
    В процессе составления данного описания выяснилось, что установка в 1 параметра bHidden кнопки [Log] ( как и кнопки [G] ) не приводит к её "уничтожению". Вместо этого кнопка начинает "жить собственной жизнью". Данная ошибка будет исправлена в следующих версиях эмулятора терминала.
    Последний раз редактировалось Patron; 16.03.2012 в 21:51.

  5. #15
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Использование эмулятора в конфигурации по-умолчанию. 2. Системная консоль.

    Использование эмулятора в конфигурации по-умолчанию.

    2. Системная консоль.
    ---------------------------

    Объекты типа Config организуют окна, открываемые объектами, создаваемыми в используемом файле конфиграции - в виде набора закладок.

    Единственная закладка, всегда присутствующая в этом наборе ( и всегда являющаяся крайней слева ) - консоль объекта Config.
    Консоль корневого объекта типа Config иерархии эмулируемых конфигураций - выполняет также функции системной консоли эмулятора.

    Выбрав закладку Консоль в "эмуляторе ДВК", запущенном в конфигурации по-умолчанию - можно увидеть примерно следующее ( точный вид зависит от используемой темы оформления интерфейса Windows ):

    Скрытый текст

    [свернуть]

    Если в секции [Config.ini] файла default.cfg установить в 1 параметр InitialStateOf[Log], то при каждой загрузке файла конфигурации default.cfg - будет создаваться лог системной консоли с именем файла конфигурации и расширением .log . В конфигурации по-умолчанию это будет файл default.log следующего содержания:

    Скрытый текст

    Код:
    Конфиг загружается: default.cfg
    
    Конфиг: Встроенный модуль   : Main_module.em
    Конфиг: Встроенный модуль   : CPU11_module.em
    Конфиг: Встроенный модуль   : DSK_module.em
    Конфиг: Встроенный модуль   : Port_module.em
    Конфиг: Встроенный модуль   : Terminal_module.em
    
    
    HD: HD0 подключен к [HDSYS.DSK] 
    
    CPU: Скорость эмуляции: Достоверная скорость 1801ВМ1
    
    [0.14] Конфиг загружен
    
    bus: Подготовка эмуляции..
    ---------------------------------------------------------------------------------
    Устройство         Имя                Компонент        Адреса          Векторы
    ---------------------------------------------------------------------------------
    1801ВМ1            CPU                ВЕ-Регистры      0177700:3          
                                          ВЕ-Таймер        0177706:3          
    Плата МС1201       CpuBoard           Сетевой таймер                   0100:1 
                                          ПЗУ-Бэйсик       Отключен        
                                          ПЗУ-Пульт        0160000:0          
                                          ПЗУ-Загрузчик    0173000:256        
                                          ОЗУ              0177600:32         
                                          SEL2             0177714:1          
                                          SEL1             0177716:1          
    Диск HD            HD                                  0177720:2          
    Плата DL11-W       TerminalPort       Порт терминала   0177560:4        060:2 
                                          Сетевой таймер   Отключен        
    Плата DL11-W       TerminalPort2      Порт терминала   0176510:4       0310:2 
                                          Сетевой таймер   Отключен        
    ---------------------------------------------------------------------------------
    
    Эмуляция запущена..
    
    
    Эмуляция остановлена..
    Конфиг закрыт..
    [свернуть]

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

    Скрытый текст

    [свернуть]

    Установив в 1 в секции [Config.ini] файла default.cfg параметр ExtendedStartLog - можно узнать время создания (в секундах от начала загрузки файла конфигурации) каждого объекта эмулируемой конфигурации:

    Скрытый текст

    Код:
    Конфиг загружается: default.cfg
    
    [0.00] ReadIniSection [modules]
    
    [0.00] Конфиг: Встроенный модуль   : Main_module.em
    [0.00] Конфиг: Встроенный модуль   : CPU11_module.em
    [0.00] Конфиг: Встроенный модуль   : DSK_module.em
    [0.00] Конфиг: Встроенный модуль   : Port_module.em
    [0.00] Конфиг: Встроенный модуль   : Terminal_module.em
    
    [0.00] ReadIniSection [objects]
    
    [0.01] Создан объект: [bus]
    [0.01] Создан объект: [Debug]
    [0.01] Создан объект: [CPU]
    
    HD: HD0 подключен к [HDSYS.DSK] 
    
    [0.01] Создан объект: [HD]
    [0.06] Создан объект: [VT52]
    [0.06] Создан объект: [Booter]
    [0.06] Создан объект: [CpuBoard]
    [0.06] Создан объект: [TerminalPort]
    [0.06] Создан объект: [TerminalPort2]
    [0.06] Создан объект: [MIPS_LIMIT_Part]
    [0.06] Создан объект: [MIPS_Part]
    [0.06] Создан объект: [Timer_Button]
    [0.08] Создан объект: [HALT_Button]
    [0.08] Создан объект: [Reset_Button]
    [0.08] Создан объект: [Power_Button]
    [0.08] Создан объект: [Pause_Button]
    
    [0.08] ReadIniSection [links]
    
    [0.09] Объекты связаны
    
    CPU: Скорость эмуляции: Достоверная скорость 1801ВМ1
    
    [0.14] Конфиг загружен
    
    bus: Подготовка эмуляции..
    ---------------------------------------------------------------------------------
    Устройство         Имя                Компонент        Адреса          Векторы
    ---------------------------------------------------------------------------------
    1801ВМ1            CPU                ВЕ-Регистры      0177700:3          
                                          ВЕ-Таймер        0177706:3          
    Плата МС1201       CpuBoard           Сетевой таймер                   0100:1 
                                          ПЗУ-Бэйсик       Отключен        
                                          ПЗУ-Пульт        0160000:0          
                                          ПЗУ-Загрузчик    0173000:256        
                                          ОЗУ              0177600:32         
                                          SEL2             0177714:1          
                                          SEL1             0177716:1          
    Диск HD            HD                                  0177720:2          
    Плата DL11-W       TerminalPort       Порт терминала   0177560:4        060:2 
                                          Сетевой таймер   Отключен        
    Плата DL11-W       TerminalPort2      Порт терминала   0176510:4       0310:2 
                                          Сетевой таймер   Отключен        
    ---------------------------------------------------------------------------------
    
    Эмуляция запущена..
    
    
    Эмуляция остановлена..
    Конфиг закрыт..
    [свернуть]
    Последний раз редактировалось Patron; 14.03.2012 в 15:45.

  6. #16
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Использование эмулятора в конфигурации по-умолчанию. 3. Отладочная консоль.

    Использование эмулятора в конфигурации по-умолчанию.

    3. Отладочная консоль.
    ----------------------------

    Выбрав в окне эмулятора, запущенного в конфигурации по-умолчанию, закладку Debug - можно увидеть содержимое отладочной консоли:

    Скрытый текст

    [свернуть]

    На эту консоль эмулятор процессора ( объект CPU типа 1801VM1 ) выводит информацию о всех обращениях к несуществующим адресам и о неопознанных кодах команд.

    Узнав, обращение к какому именно отсутствующему адресу или коду команды вызвало ошибку запускавшейся в эмуляторе программы - можно сделать вывод о необходимых для работы такой программы аппаратных средствах.

    При запущенном драйвере EM.SYS команды EIS и FIS эмулируются этим драйвером, но поскольку переход в драйвер осуществляется через вектор прерывания по резервной команде - полноценная работа программы, использующей команды EIS и FIS - может сопровождаться непрерывным выводом сообщений о неопознанных командах на отладочную консоль.
    Последний раз редактировалось Patron; 14.03.2012 в 19:11.

  7. #16
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #17
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Изменение эмулируемой конфигурации.

    Загрузка файлов конфигурации.
    ----------------------------------------------


    В комплекте поставки "эмулятора ДВК" находятся три файла конфигурации: 1) default.cfg; 2) 60Kb.cfg; 3) Бэйсик НЦ.cfg.

    Первый из них является файлом конфигурации по-умолчанию и автоматически загружается при первом запуске эмулятора. Однако, можно в любой момент выбрать в меню эмулятора пункт "Файл -> Открыть" и загрузить любой другой имеющийся файл конфигурации:

    Скрытый текст

    [свернуть]

    В файле 60Kb.cfg эмулируется доработанный вариант ДВК-1 с увеличенным на 4К объёмом памяти:

    Скрытый текст



    [свернуть]

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

    ...

    В файле Бэйсик НЦ.cfg эмулируется ДВК-1 с установленным ПЗУ Бэйсик и настройкой начального пуска на переход в ПЗУ:

    Скрытый текст

    [свернуть]
    Ошибочка..

    После добавления состояния Boot в объект Booter - файл Бэйсик НЦ.cfg не был скорректирован, а поскольку состояние Boot объекта Booter имеет по-умолчанию значение 1, то теперь при загрузке этого файла конфигурации осуществляется принудительный запуск RT-11.

    Поэтому, для перехода в ПЗУ-Бэйсик нужно отжать и снова нажать кнопку [Вкл.] ( или нажать и снова отжать кнопку [Сброс] ):

    Скрытый текст

    [свернуть]


    Но мы не ищем лёгких путей - поэтому для нормальной загрузки файла конфигурации Бэйсик НЦ.cfg - вообще удалим из него объект Booter, закомментировав строку создания этого объекта в секции [objects]:

    Код:
    [objects]
    
    bus      = Ядро:PDP11A16
    
    Debug	 = Ядро:Console
    CPU      = CPU_module:1801VM1
    HD       = DSK_module:HD
    VT52     = Terminal_module:Terminal
    ; Booter   = Ядро:Booter
    CpuBoard = CPU_module:MS1201
    Теперь, при загрузке файла конфигурации Бэйсик НЦ.cfg - результат будет таким:

    Скрытый текст

    [свернуть]
    Опять ошибочка..

    Но на этот раз гораздо понятнее, в чём дело! Эмулятор явно недоволен тем, что мы требуем от него подключить к эмулируемой шине несуществующий объект Booter.

    Видимо, нужно снова открыть в редакторе файл Бэйсик НЦ.cfg и отредактировать упомянутую строку в секции [links].

    Было:
    Код:
    [links]
    
    bus & CPU | CpuBoard | HD | TerminalPort | Booter
    Стало:
    Код:
    [links]
    
    bus & CPU | CpuBoard | HD | TerminalPort ; | Booter
    Теперь, при загрузке файла конфигурации Бэйсик НЦ.cfg - результат будет таким:

    Скрытый текст

    [свернуть]

    Ура!

    Достигнута долгожданная цель, к которой ( в нашем лице ) стремилось всё прогрессивное человечество !!!
    Последний раз редактировалось Patron; 29.12.2012 в 13:03.

  9. #18
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Изменение эмулируемой конфигурации. 2. Формат файлов конфигурации.

    Изменение эмулируемой конфигурации.

    Формат файлов конфигурации.
    --------------------------------------------

    Так как имеющихся в комплекте поставки эмулятора .cfg-файлов не достаточно "на все случаи жизни", то прежде чем копировать их под другими именами и затем изменять, или "с чистого листа" создавать новые - полезно в общих чертах уяснить, что именно и зачем там написано.

    Все файлы конфигурации имеют ( в основном ) следующий формат:
    Код:
    [section]
    key = value
    ; comment
    основанный на формате MS PrivateProfile для .ini-файлов.

    Символ ';' имеет особый смысл и исключает строку из рассмотрения ( превращая её в комментарий ) только в том случае, когда является первым непробельным символом в строке.

    Три секции в каждом .cfg-файле ( обычно располагающиеся в начале файла ) имеют специальное назначение.

    ...

    Секция [modules] содержит объявления используемых модулей в формате:
    Код:
    имя_модуля = путь_к_файлу_модуля
    Модули эмулятора - это обычные файлы .dll, переименованные в .em

    Поиск файла модуля ( если путь к файлу модуля не исключает такой возможности ) вначале осуществляется в каталоге встроенных модулей. В комплекте поставки "эмулятора ДВК" все поставляемые модули встроены в файл pdp11.exe.

    В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем каталога встроенных модулей отсутствуют.

    Чтобы экспортируемые модулем объекты могли быть использованы в эмулируемой конфигурации - модуль должен быть объявлен в секции [modules].

    ...

    Секция [objects] содержит объявления используемых объектов в формате:

    Код:
    имя_объекта = имя_модуля:тип_экспортируемого_модулем_объекта
    В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем списка экспортируемых модулем объектов отсутствуют.

    В процессе загрузки файла конфигурации - объекты создаются в том порядке, в котором они объявлены в секции [objects], и если объект создаёт окно средствами модульного API - такие окна располагаются на панеле закладок объекта Config в порядке создания "владеющих" ими объектов ( слева направо ).

    Все имена объектов, объявленных в секции [objects], должны быть уникальны (иначе эмулятор будет ругаться).

    ...

    Секция [links] содержит строки ( несовместимые с форматом MS PrivateProfile для .ini-файлов ), описывающие способы динамического связывания созданных объектов на специальном языке описания связей ( который будет рассмотрен позже ).

    В секции [links] "поведение" символа ';' отличается от других секций. В любых других секциях символ ';' "работает" ( превращая строку в комментарий ) только в самом начале строки, а в секции [links] - символ ';' означает начало комментария в любой позиции.

    Это позволяет "отключать" несколько последних элементов в строке описания группового присоединения, без необходимости их полного удаления из строки.

    ...

    Все остальные секции .cfg-файлов имеют формат:

    Код:
    [имя_объекта.ini]
    параметр = значение
    ; комментарий
    и автоматически размещаются там объектами при их первом создании ( в том случае, если объект имеет хотя бы одно хранимое состояние или хотя бы один хранимый параметр ).

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

    Начальные значения всех параметров в "свежей" секции объекта - соответствуют их значениям по-умолчанию. Только что автоматически созданная "свежая" секция объекта не может содержать значений базовых параметров ( из глобального ini-файла класса ), однако при любом изменении базовых параметров экземпляра объекта в процессе эмуляции - их изменённые значения будут сохранены в секции этого объекта в файле конфигурации.
    Последний раз редактировалось Patron; 14.01.2014 в 19:19.

  10. #19
    Guru
    Регистрация
    11.09.2009
    Адрес
    Москва
    Сообщений
    4,777
    Спасибо Благодарностей отдано 
    2
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    61 сообщений
    Mentioned
    16 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Изменение эмулируемой конфигурации. 3. Использование консолей.

    Изменение эмулируемой конфигурации.

    Свойства окон объектов.
    -----------------------------------


    Чтобы главное окно объекта попало в закладки конфига - оно должно быть создано при помощи модульного API. Все такие окна принадлежат к базовому классу Workfield, а автоматически создающие их объекты - к базовому классу WorkfieldOwner. Это обеспечивает универсальное единообразие свойств главных окон объектов модульного API.

    Для выяснения этих свойств - создадим пустой файл, назовём его test.cfg и загрузим в эмулятор командой меню "Файл -> Открыть":

    Скрытый текст

    [свернуть]


    Открыв затем файл test.cfg в текстовом редакторе - можно обнаружить, что объект Config уже "прописал" туда свою секцию:
    Код:
    [Config.ini]
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=0
    ExtendedStartLog=0
    ActiveWindowHandle=
    ActiveConfigID=
    InitialStateOf[ControlBar]=0
    SaveChangesFor[ControlBar]=0
    InitialStateOf[StatusBar]=0
    SaveChangesFor[StatusBar]=0
    Изменим значения состояний ControlBar и StatusBar на 1:

    Код:
    [Config.ini]
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=0
    ExtendedStartLog=0
    ActiveWindowHandle=
    ActiveConfigID=
    InitialStateOf[ControlBar] = 1
    SaveChangesFor[ControlBar] = 0
    InitialStateOf[StatusBar]  = 1
    SaveChangesFor[StatusBar]  = 0
    и снова запустим эмулятор:

    Скрытый текст

    [свернуть]

    Сравнив результаты можно заметить, что выше и ниже окна закладок появились полосы для размещения виджетов ( верхняя называется ControlBar, а нижняя - StatusBar ).

    Отключим верхнюю полосу, установив InitialStateOf[ControlBar] опять в 0 и добавим в файл test.cfg строки, необходимые для создания консоли:

    Код:
    [modules]
    
    Main = Main_module.em
    
    [objects]
    
    Con  = Main:Console
    
    
    [Config.ini]
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=0
    ExtendedStartLog=0
    ActiveWindowHandle=
    ActiveConfigID=
    InitialStateOf[ControlBar] = 0
    SaveChangesFor[ControlBar] = 0
    InitialStateOf[StatusBar]  = 1
    SaveChangesFor[StatusBar]  = 0
    Снова запустим эмулятор:

    Скрытый текст

    [свернуть]

    Открыв ещё раз файл test.cfg в редакторе - можно обнаружить, что там появилась новая секция, размещённая созданным экземпляром консоли:

    Код:
    [Con.ini]
    TabTitle=""
    InitialStateOf[ControlBar]=1
    SaveChangesFor[ControlBar]=0
    InitialStateOf[StatusBar]=1
    SaveChangesFor[StatusBar]=0
    LeftDumpSeparator="«"
    RightDumpSeparator="»"
    InitialStateOf[Dump]=1
    SaveChangesFor[Dump]=0
    InitialStateOf[Log]=0
    SaveChangesFor[Log]=0
    Как видим - здесь состояния ControlBar и StatusBar имеют по умолчанию значения 1, поэтому, перейдя на закладку Con можно окончательно убедиться, что окно консоли имеет свои собственные полосы виджетов и что по умолчанию они включены:

    Скрытый текст

    [свернуть]


    То же справедливо и для окон "свежесозданных" объектов типа Terminal - у них верхняя и нижняя полосы главного окна также по умолчанию включены:

    Скрытый текст


    Код:
    [modules]
    
    Main = Main_module.em
    Term = Terminal_module.em
    
    [objects]
    
    Con  = Main:Console
    VTxx = Term:Terminal
    [свернуть]

    ...

    Все главные окна объектов ( кроме окна корневого конфига ) имеют параметр TabTitle, определяющий название закладки. По умолчанию этот параметр не задан и тогда название закладки главного окна объекта совпадает с именем объекта, указанным при его создании.

    Однако, если в нашем тестовом файле конфигурации test.cfg изменить параметры TabTitle консоли и терминала на "Консоль", то результат может показаться довольно оригинальным:

    Скрытый текст

    [свернуть]
    Последний раз редактировалось Patron; 29.12.2012 в 13:01.

  11. #20
    R.I.P. Аватар для hobot
    Регистрация
    30.08.2011
    Адрес
    Зеленоград
    Сообщений
    7,161
    Спасибо Благодарностей отдано 
    2,979
    Спасибо Благодарностей получено 
    370
    Поблагодарили
    309 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Patron Посмотреть сообщение
    В версии модульного API, существующей на момент создания данного описания - средства просмотра пользователем каталога встроенных модулей отсутствуют.
    но это же можно реализовать будет или будут как-то иначе скомпилированы сами
    модули ??? не в один exe наверное а расчленёнкой ??? хотя мне то больше как пользователя интересует доработка именно ДВК-эмулятора (в смысле контроллера графического дисплея) про цветной вроде как есть EmuStudio, но вот обычный было бы просто супер!!! "ПОЧТИ" реальная мощная ДВК где работает "ПИФ-ПАФ" )))

    И на скринах видна дата последней сборки 15 марта 2012 - это просто для теста,
    описания перекомпилировано было??? Или грядёт обновление ???
    Архив программ для УК-НЦ, ДВК и БК.

    Ищу игру "СТРАНА МОНСТРОВ" [monstr.sav] для ДВК.

Страница 2 из 183 ПерваяПервая 123456 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 5 (пользователей: 0 , гостей: 5)

Похожие темы

  1. Эмулятор
    от vladimir53 в разделе Орион
    Ответов: 19
    Последнее: 24.06.2022, 08:02
  2. Эмулятор ПЗУ.
    от ALKO в разделе Память
    Ответов: 8
    Последнее: 17.05.2011, 13:41
  3. Эмулятор AY на AVR
    от serkiri в разделе Звук
    Ответов: 52
    Последнее: 10.06.2010, 09:01
  4. Эмулятор для Mac
    от AlexBel в разделе Эмуляторы
    Ответов: 11
    Последнее: 02.05.2010, 18:53

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •