Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Тема: Эмулятор ДВК. Эмулятор двк


Эмулятор ДВК - Page 2

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

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

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

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

Например.

В файле Terminal.ini из комплекта поставки эмулятора для клавиши <F12> задана такая подставляемая строка:

Code:

ANSI_STR_FOR_KEY[F12] = "F12 " А в секции [VT52.ini] файла default.cfg такая:

Code:

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

Всего можно определить в файле Terminal.ini и переопределить в ini-секциях объектов типа Terminal в файлах конфигурации подставляемые строки для следующих клавиш:

Code:

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 :

Code:

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

По умолчанию параметры управления клавиатурой таковы:

Code:

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>.

vb4.zx-pk.ru

Эмулятор ДВК - Страница 14

Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_27.12.12_18-37.

Изменения:

1. Внесены изменения терминала и консоли, описанные ЗДЕСЬ.

2. В модуль DSK_module.em добавлен объект MX, эмулирующий контроллер КНГМД ДВК с 4 подключенными приводами. Число дорожек привода зависит от размеров подключенного DSK-образа диска. Для образов размером 225280 байт эмулируются 40 дорожек, для образов размером 450560 байт - 80 дорожек. Подключение DSK-образов любых других размеров невозможно. Для TRK-образов эмулируются только 80-дорожечные приводы.

Другие эмулируемые характеристики приводов:

- период оборота диска: ............... 200 мс; - время шага головки: .................. 11 мс: - время прижима головки: ............... 30 мс; - время старта двигателя: ............. 500 мс; - продолжительность сигнала ИНДЕКС: ..... 1 мс;

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

3. В модуль Main_module.em добавлен новый тип виджета: SB_DriveButton, индицируюший работу присоединённого к виджету привода (при наличии у привода интерфейса StorageDriveInterface), а также позволяющий менять подключенные к приводу образы.

4. В комплект поставки добавлены образы MX80_System.DSK, MX40_System.DSK и MX40_User.DSK.

5. В образы HDSYS.DSK, MX80_System.DSK и MX40_System.DSK добавлен драйвер MX.SYS ( MX-HANDLER V02.2 October,1987 Потемкин М.И. ; Boot v1.0 ), пропатченный для улучшения совместимости с RT-11 и современными компактными дисководами.

6. В файл default.cfg добавлена эмуляция контроллера MX. Объект MX подключен к виджету MediaButton, позволяющему менять образы в приводах устройств HD и MX. Для переключения между устройствами HD и MX нужно использовать кнопку [>] виджета.

7. В комплект поставки добавлены файлы конфигурации ДВК-1_MX40.cfg и ДВК-1_MX80.cfg. После запуска ДВК-1_MX80.cfg загрузка с MX0 начинается автоматически ( из-за установки SEL1_Data = 0160020 ). После запуска ДВК-1_MX40.cfg - для начала загрузки операционной системы нужно ввести с клавиатуры "X0". Регистр важен - по "x0" загрузка не начнётся.

8. Ранее поставлявшаяся версия игры MARS.SAV была дефектной - теперь на дисках HDSYS.DSK и MX40_User.DSK находятся "правильные" версии MARS.SAV и MARS.DAT.

9. В комплект всех системных дисков включены Y2K 8 Bit версии мониторов без поддержки таймера и таймаутов, а также программа DAY.SAV, запускающаяся при загрузке.

zx-pk.ru

Эмулятор ДВК - Страница 24

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

Использование встроенного дизассемблера. ---------------------------------------------------------------

Файл конфигурации DisAsm.cfg содержит пример использования дизассемблера, встроенного в эмулятор процессора. Для отображения листинга дизассемблирования создаётся дополнительная консоль DisAsm, которая находится в отдельном окне:

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

Код:

[objects] DisAsm = Ядро:Console [links] CPU [DisAsm] > DisAsm [DisAsm.ini] TabTitle="" SeparateWindow_X0_px=0 SeparateWindow_Y0_px=0 SeparateWindow_DX_px=800 SeparateWindow_DY_px=600 InitialStateOf[SeparateWindow]=1 SaveChangesFor[SeparateWindow]=1 InitialStateOf[ControlBar]=0 SaveChangesFor[ControlBar]=1 InitialStateOf[StatusBar]=1 SaveChangesFor[StatusBar]=1 DumpMode=1 PrinterMode=0 InitialStateOf[Log]=0 SaveChangesFor[Log]=1

[свернуть]

На полосе окна DisAsm находятся виджеты кнопок, подключенных к состояниям объектов CPU и bus:

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

Код:

[objects] DisAsm_Button = Ядро:SB_StatePushButton StepMode_Button = Ядро:SB_StatePushButton Step_Button = Ядро:SB_StateFlashButton DisAsmLog_Button = Ядро:SB_StateFlashButton CLS_Button = Ядро:SB_StatePushButton [links] DisAsm + ( DisAsm_Button + CPU ) | ( StepMode_Button + CPU ) | ( Step_Button + bus ) DisAsm + ( DisAsmLog_Button + DisAsm ) | ( CLS_Button + DisAsm ) [DisAsm_Button.ini] SB_Part_Data=nPosition[1] | nPriority[0] | bHidden[0] TextFieldWidth_Px=0 TextFieldText= ButtonPushMode = 2 IsInverted = 0 ButtonON_Text = "DisAsm" ButtonOFF_Text = "DisAsm" ButtonWidth = 70 ButtonHeight = 18 ButtonFontSize = 12 ButtonFontWeight = 600 StateName = "DisAsm" [StepMode_Button.ini] SB_Part_Data=nPosition[2] | nPriority[0] | bHidden[0] TextFieldWidth_Px=0 TextFieldText= ButtonPushMode = 2 IsInverted = 0 ButtonON_Text = "Step Mode" ButtonOFF_Text = "Step Mode" ButtonWidth = 90 ButtonHeight = 18 ButtonFontSize = 12 ButtonFontWeight = 600 StateName = "StepMode" [Step_Button.ini] SB_Part_Data=nPosition[3] | nPriority[0] | bHidden[0] TextFieldWidth_Px=0 TextFieldText= ButtonPushMode = 2 IsInverted = 0 ButtonON_Text = "Step" ButtonOFF_Text = " " StateName = Pause ButtonWidth = 60 ButtonHeight = 18 ButtonFontSize = 12 ButtonFontWeight = 600 PushedButton_Text_X_Offset_Px = 0 PushedButton_Text_Y_Offset_Px = 3 PoppedButton_Text_X_Offset_Px = 0 PoppedButton_Text_Y_Offset_Px = 3 ButtonON_TextColor = 0,0,0 ButtonOFF_TextColor = 0,0,0 ButtonON_Background = 210,210,110 ButtonOFF_Background = 1,0,0 Is_PoppedButton_Border_ButtonLike = 0 Is_PushedButton_Border_ButtonLike = 0 DoCenterAlignButtonText = 1 LightsOFF_StateName=Power [DisAsmLog_Button.ini] SB_Part_Data=nPosition[4] | nPriority[0] | bHidden[0] TextFieldWidth_Px=0 TextFieldText= ButtonPushMode = 2 IsInverted = 0 ButtonON_Text = "Log" ButtonOFF_Text = "Log" StateName = Log ButtonWidth = 60 ButtonHeight = 18 ButtonFontSize = 17 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 = 0 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 = 1 LightsOFF_StateName=Power [CLS_Button.ini] SB_Part_Data=nPosition[5] | nPriority[0] | bHidden[0] TextFieldWidth_Px=0 TextFieldText= ButtonPushMode = 1 IsInverted = 0 ButtonON_Text = "Clear" ButtonOFF_Text = "Clear" ButtonWidth = 60 ButtonHeight = 18 ButtonFontSize = 12 ButtonFontWeight = 600 StateName = "ClearScreen"

[свернуть]

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

Слева в листинге дизассемблера указаны значения PC и PSW, потом мнемоника команды и в поле комментариев - содержимое операндов до выполнения команды.

При нажатии кнопки [ Лог ] - листинг начинает писаться в файл DisAsm.log, при этом в листнг попадают только те строки, которые были выведены на консоль когда кнопка [ Лог ] уже была нажата. Чтобы сохранить строки, выведенные на консоль до этого - их можно скопировать в буфер обмена, нажав клавишу <PrintScreen> ( при этом копируются все строки от верхней, видимой на экране, до последней, выведенной на консоль, поэтому, чтобы скопировать в буфер обмена весь текстовый буфер консоли - нужно сначала промотать содержимое экрана до самого верха при помощи полосы прокрутки или колеса мыши ).

В данной конфигурации на шине присутствует отладочный порт, создаваемый объектом CPUCSR:

Код:

[objects] CPUCSR = CPU_module:CPUCSR [links] bus & CPU | CpuBoard | TerminalPort | PrinterPort bus & Booter | TerminalPort2 | MX | HD | CPUCSR [CPUCSR.ini] CPUCSR_Address = 0177724 Пример взаимодействия отлаживаемой программы с отладочным портом эмулятора находится на системном диске в файлах CPUCSR.SAV и CPUCSR.MAC:

Код:

; ; Тест отладочного регистра эмулятора процессора ( 0177724 ). ; ; ; Бит 01 включает/выключает дизассемблер ; ( при выключении - выключает и пошаговый режим ). ; ; Бит 02 включает/выключает пошаговый режим ; ( при включении - включает и дизассемблер ). ; ; .MCall .Exit START: Mov #2, @#177724 ; Включает дизассемблер в пошаговом режиме. Mov #100., R0 Mov #10., R1 Mov #4, R2 Clr R3 BiC #2, @#177724 ; Выключает пошаговый режим. 1$: Inc R3 SOB R0, 1$ BiS #2, @#177724 ; Включает пошаговый режим. Inc R1 EMT 341 Inc R2 Inc R3 Mov #0, @#177724 ; Выключает дизассемблер. ;================================ Dec R1 Dec R2 Dec R3 ;================================ Mov #1, @#177724 ; Включает дизассемблер в потоковом режиме. Mov #12., R0 2$: Dec R0 BEq 3$ Cmp R0, #5 BLE 2$ SOB R0, 2$ 3$: ;================================ 22$: Inc R1 Inc R2 Inc R3 Inc PC Br 22$ ;================================ Mov #0, @#177724 ; Выключает дизассемблер. .Exit .End START ; Запуск CPUCSR.SAV осуществляется в окне терминала, по команде: Чтобы в листинг не включался текст системного обработчика команды EMT - в файле конфигурации DisAsm.cfg нужно изменить верхнюю границу окна дизассемблирования:

Код:

[CPU.ini] CPU_Frequency_KHz = 5300 CPU_SpeedLimit_KIPS =True DisAsmBottomAddr = 0 DisAsmTopAddr = 040000 ;; DisAsmTopAddr = 0177776 InitialStateOf[DisAsm]=0 SaveChangesFor[DisAsm]=1 InitialStateOf[StepMode]=0 SaveChangesFor[StepMode]=1

zx-pk.ru


 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..