Просмотр полной версии : Эмулятор ДВК
Страницы :
1
2
[
3]
4
5
6
7
8
Последнюю сборку эмулятора, сделал репост на игровом форуме
http://www.old-games.ru/forum/showpost.php?p=1162607&postcount=39
Думаю сильного вреда не будет.
foxb2673
24.12.2014, 08:44
А есть ли возможность установить watchpoint на определённый адрес?
Как-то туда залетает одно значение, не могу отловить, кто именно пишет...
Причём в режиме DisAsm проблема не проявляется, а так бы я просто в журнале поиском нашёл.
А есть ли возможность установить watchpoint на определённый адрес?Такой возможности нет.
Как-то туда залетает одно значение, не могу отловить, кто именно пишет... Причём в режиме DisAsm проблема не проявляется, а так бы я просто в журнале поиском нашёл.Возможно - запись происходит в теле цикла и не попадает в листинг из-за того, что циклы в листинге не разворачиваются.
Начиная со следующего релиза в настройки процессора будет добавлен параметр
MaxLoopCommandsToHide = 32
задающий размер сворачиваемых циклов в диапазоне от 0 до 256 команд. При значении 0 - циклы не сворачиваются вообще и листинг дизассемблирования циклически пишется в пределах максимального размера файла листинга = 4 ГБайт.
---------- Post added at 11:37 ---------- Previous post was at 11:24 ----------
Кстати, сейчас обнаружил глюк - в текущем релизе при включении пошагового дизассемблирования ничего не останавливается и пошаговый режим не включается, но зато циклы сворачиваться перестают.
Это можно использовать.
foxb2673
25.12.2014, 06:15
Какая-то странная плавающая проблема с КЖД - иногда считываются некорректные данные, или что-то ещё происходит. Проявляется при увеличенном быстродействии эмулируемой машины, например, при CPU MIPS Лимит = Max, 9000, 5000.
При MIPS <= 2000 не проявляется (по крайней мере, за два часа дождаться не получилось).
Также не проявляется при включённом дизассемблировании (оно тоже снижает быстродействие, и, возможно, поэтому проблема не возникает).
Какая-то странная плавающая проблема с КЖД - иногда считываются некорректные данные, или что-то ещё происходит. Проявляется при увеличенном быстродействии эмулируемой машины, например, при CPU MIPS Лимит = Max, 9000, 5000.
При MIPS <= 2000 не проявляется (по крайней мере, за два часа дождаться не получилось).
Также не проявляется при включённом дизассемблировании (оно тоже снижает быстродействие, и, возможно, поэтому проблема не возникает).
Могу предположить, что проблема с тем как драйвер обрабатывает прерывания (и отсутствием механизма настроки отсрочки прерывания в эмуляторе). Если проблема в этом, то она детально описана в начале документации по E11 и тамже описано решение позволяющее нормально работать при любой скорости эмулятора.
foxb2673
25.12.2014, 08:21
Возможно. Но из драйвера на это вряд ли получится повлиять. По крайней мере, не вижу подходящего workaround-а. Прерывания от контроллера разрешаю в самом конце подпрограммы запуска ввода-вывода. Дальше следует только возврат в монитор, в котором выполняется ещё какой-то код. Судя по трассировкам дизассемблирования, в открытых прерываниях. Не исключено, что если в этот момент произойдёт прерывание, оно может оказаться неожиданным.
Проблема часто проявляется в RT-11 V05.04, и почти отсутствует (поймал всего пару раз) в 05.07.
Настроек задержки прерываний от разных внешних устройств в конфигурации эмулятора не нашёл.
Возможно. Но из драйвера на это вряд ли получится повлиять. По крайней мере, не вижу подходящего workaround-а.
Если дело в прерываниях, то нужна поддержка в самом эмуляторе для workaround'а. В E11 можно командой SET DELAY выставлять контроллеру задержку (прерывание возникает не раньше чем "процессор" выполнит определенное количество инструкций), в SimH тоже есть какой-то механизм, правда не знаю настраивается он или фиксирован... В принципе реализовать не так сложно я думаю. Ну как вариант можно разобрать драйвер и посмотреть что там делается в хандлере прерываний.
Какая-то странная плавающая проблема с КЖД - иногда считываются некорректные данные, или что-то ещё происходит.С каким драйвером?
Сейчас сравнил чтение одного образа через DW и HD на скорости 40 MIPS - результат такой:
.DIFF/BIN DW0: HD7:
?BINCOM-W-File is longer HD7:*.
BINCOM comparing/ DW0:*. -- HD7:*.
?BINCOM-I-No differences found
.
Если есть драйвер, который нормально читает DW при любой скорости процессора - проблема не в эмуляторе.
С каким драйвером?
Вариантов нету - только DW. HD вообще прерывания не использует.
Вариантов нету - только DW.Имеется в виду, что если есть драйвер, который без проблем работает на любой скорости, то в плохой работе конкретного драйвера виноват не эмулятор, а автор драйвера.
Некоторые драйверы MX, например - могут работать только на родной скорости процессора.
Имеется в виду, что если есть драйвер, который без проблем работает на любой скорости, то в плохой работе конкретного драйвера виноват не эмулятор, а автор драйвера.
Некоторые драйверы MX, например - делают задержки в цикле SOB, поэтому могут работать только на родной скорости процессора.
Ну тут вопрос сложный: с одной стороны драйвер желательно делать универсальным и независящим от скорости, с другой и DEC и Mentec делали с точностью до наоборот всегда :)
Я думаю добавить параметр задержки прерывания не так уж и сложно, а там можно и гипотезу проверить...
Кстати в RT-11 вообще иной раз возможны проблемы в случае когда I/O (прерывания вообще непричем) завершается до того как управление вернулось из драйвера в монитор - наступал когда-то, но тут уже не вспомню деталей, да и не факт что эти проблемы есть после версии 5.0...
Patron, возможно что 300герцовый ВМ1 это перебор? )
http://s7.hostingkartinok.com/uploads/images/2014/12/7e1ca325094f7a413d87833ba0af63e1.png
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_31.12.14_21-20 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_31.12.14_21-20.rar)
Изменения:
1. Внесены изменения, описанные ЗДЕСЬ (http://zx-pk.ru/showthread.php?p=767164#post767164).
2. В модуль CPU11_module.em добавлены объекты 1801VM2 и MS1201.02.
3. Добавлен файл 055.dat, содержащий прошивку -055 для платы МС1201.02.
4. Добавлены файлы конфигурации ДВК-2_DX.cfg, ДВК-2_MX40.cfg, ДВК-2_MX80.cfg, ДВК-2_MY80.cfg
5. Заменён процессор на ВМ2 в файлах конфигурации default.cfg, CmdLine.cfg, LoadScript.cfg, DisAsm.cfg, 60Kb.cfg
...
Отлично!:v2_dizzy_vodka3::v2_dizzy_roll: :v2_dizzy_punk: :v2_thumb:
Всех с наступающем Новым годом!
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_03.01.15_23-15 (http://emulator.pdp-11.org.ru/DVK/distr/DVK_Emulator_03.01.15_23-15.rar)
Изменения:
1. Исправлено несколько ошибок в эмуляции процессоров, сидевших в коде много лет. Одна из них с небольшой вероятностью приводила к вылету эмулируемой ДВК в пульт при любом нажатии на клавишу, другая при одновременной эмуляции MX и DX приводила в ходе загрузки RT-11 к прекращению на 2 секунды диспетчеризации событий таймера движком эмуляции.
2. Добавлен файл конфигурации ДВК-2_DY.cfg
3. Исправлены комментарии в файлах конфигурации.
...
2. Добавлен файл конфигурации ДВК-2_DY.cfg При запуске вылетает на 000000. После В$DY загружается и показывает время/дату 00:00:00 31-дек-2014, Среда. В Винде время/дата правильные.
Для помещения в память эмулятора кода любых ПЗУ служит объект типа ROM.Сделал загрузчик НХ в ROM но консоль пишет что адрес ВВ/ВЫВ уже занят. Стартовый адрес сделал 173000 а SEL 140006.
Делалось по совокупности 3 сообщений -
http://zx-pk.ru/showpost.php?p=767957&postcount=1160
http://zx-pk.ru/showpost.php?p=591777&postcount=27
http://zx-pk.ru/showpost.php?p=761409&postcount=459
При запуске вылетает на 000000. После В$DY загружается и показывает время/дату 00:00:00 31-дек-2014, Среда.Дата из Windows не передаётся при загрузке через пульт. Для того и запускается DAY.SAV, чтобы при отсутствии даты её можно было ввести.
Стартовый адрес сделал 173000 а SEL 140006Восьмеричные значения параметров надо писать в файлах конфигурации с лидирующим нулём.
Процессор должен быть 1801VM2, а плата MS1201.02, иначе будет конфликт со встроенным ПЗУ загрузчика платы MS1201.
Дата из Windows не передаётся при загрузке через пульт. Для того и запускается DAY.SAV, чтобы при отсутствии даты её можно было ввести. Вопрос больше не про дату а про вылет. Также заметил вылет на MY,MX. На конфигурации default стартует нормально и дата/время правильное.
Восьмеричные значения параметров надо писать в файлах конфигурации с лидирующим нулём. Адрес с нулём, SEL без нуля.
Процессор должен быть 1801VM2, а плата MS1201.02, иначе будет конфликт со встроенным ПЗУ загрузчика платы MS1201. Плата и процессор MS1201.02, 1801VM2
Вопрос больше не про дату а про вылет.Это не вылет, а эмуляция включения ДВК ( правда, у настоящей ДВК выводится не ноль, а содержимое регистра PC до загрузки в него первого значения после включения питания ).
SEL без нуля.Надо с нулём, так как начальный адрес у ПЗУ МС1201.02 == 0140000
---------- Post added at 20:56 ---------- Previous post was at 20:49 ----------
Чтобы код влез с адреса 173000 - он не должен занимать много места.
Например - такой вариант успешно сажает по адресу 173000 первый блок ПЗУ Бейсика:
[ROM.ini]
ROM_DataFile = 013.dat
ROM_BaseAddress = 0173000
ROM_Bytes = 01000
ROM_LatencyNS = 100
ROM_Disable = 0
Patron, С конфигурацией разобрался. Но у меня не получился загрузчик.
По этому пара вопросов.
Достаточно ли файла Bothx0.MAC или нужен ещё файл клавиатурного ввода?
Если да то их надо сливать вместе?
В старте что писать?
.ASect
.=173000
ROM.START:
Спасибо.
Файл HXROM.bin из архива HX_Boot_ROM.zip (http://emulator.pdp-11.org.ru/misc/HX_Boot_ROM.zip) надо повесить на адрес 173000, как было показано выше.
В общем не всё так просто, запуск происходит всё равно с HD а после сброса пишет
.Щ СR Наверно из-за того что ещё не сделан сам НХ диск.
Наверно из-за того что ещё не сделан сам НХ диск.Загрузчик посылает в порт терминала запрос серверу HX, если сервер к порту не подключен - ответа не будет.
Такой же эффект получится, если в загруженной системе дать команду BOOT HX:, когда сервер HX не подключен к порту терминала.
Вроде получилось, только на экран сыпет лишними символами.
Подключал так.
TerminalPort <=> HX
Вроде получилось, только на экран сыпет лишними символами.Если отключить терминал от порта ДВК и подключить к терминальному порту сервера HX - лишние символы будут фильтроваться сервером:
TerminalPort <=> HX
HX [TTY] <=> VT52
Не Патрон, так не идет. На экране теперь все символы повторяются.
Отбой.
Закомментировал
;TerminalPort <=> VT52
всё пошло.
По запросу MiX загрузчик с устройства DW, извлеченный из прошивки 1801РЕ2-134. Код перемещаемый, поэтому в качестве ROM можно ставить с любого адреса. Хоть файл и занимает 512 байт, но его можно спокойно, с помощью Hex-редактора (например HxD), обрезать и до 64 байт.
Спасибо Alex_K только я наверно буду всё вместе делать. То есть в одну прошивку загрузчики НХ,DW,MY если места хватит.
Спасибо Alex_K только я наверно буду всё вместе делать. То есть в одну прошивку загрузчики НХ,DW,MY если места хватит.
MY тоже много места не занимает, но для него надо номер устройства. А так ещё меню делать придется с выбором устройства и номера или запускать по директиве G с нужного адреса.
Ещё идея. В прошивке -055 есть ненужные устройства. Подредактировать её, заменить их на DW и MY, можно загружаться по команде B.
в одну прошивку загрузчики НХ,DW,MY если места хватит.Но точка входа при автозагрузке одна - 173000, поэтому только какое-то одно устройство может грузиться полностью автоматически.
Alex_K, Дело в том что я сопоставляю эмуляцию с реальным железом. Поэтому прошивку 055 я не трогаю, а в пользовательскую прошивку можно запихать всё что угодно. Но и здесь надо уложится в 8,192кб чтоб можно было в реальное ПЗУ прошить.
Alex_K, Дело в том что я сопоставляю эмуляцию с реальным железом. Поэтому прошивку 055 я не трогаю, а в пользовательскую прошивку можно запихать всё что угодно. Но и здесь надо уложится в 8,192кб чтоб можно было в реальное ПЗУ прошить.
Хотите отнять у RT-11 целых 8 Кбайт? Как я понимаю с адреса 140000? Ну тогда туда много чего можно запихать, ведь даже Бейсик запихнули.
Но точка входа при автозагрузке одна - 173000, поэтому только какое-то одно устройство может грузиться полностью автоматически. Тогда надо делать меню загрузки.
---------- Post added at 01:21 ---------- Previous post was at 01:12 ----------
Хотите отнять у RT-11 целых 8 Кбайт? Как я понимаю с адреса 140000? Ну тогда туда много чего можно запихать, ведь даже Бейсик запихнули. Ну 8 это максимум, и я думаю что ПЗУ не расставляет границы кроме того загрузчика который загружен.
Хотите отнять у RT-11 целых 8 Кбайт? Как я понимаю с адреса 140000?
4К с 160000 по 170000 плата МС1201.02 никак не использует и в прошивке -055 есть опция старта с автопоиском ПЗУ, которая позволяет стартовать с первого найденного ПЗУ:
ROM:140446
ROM:140446 loc_140446: ; CODE XREF: ROM:140440j
ROM:140446 Mov #140520, @#word_170002
ROM:140454 Mov #2, R5
ROM:140460 Clr R2
ROM:140462
ROM:140462 loc_140462: ; CODE XREF: ROM:140512j
ROM:140462 Mov #125252, R1
ROM:140466 Mov R1, R0
ROM:140470 MTUS
ROM:140472 MFUS
ROM:140474 Cmp R0, R1
ROM:140476 BNE loc_140530
ROM:140500
ROM:140500 loc_140500: ; CODE XREF: ROM:140564j
ROM:140500 Add #20000, R5
ROM:140504 Inc R2
ROM:140506 Cmp R2, #7
ROM:140512 BNE loc_140462
ROM:140514 Jmp loc_144120
Похоже, что с адреса 160000 эта программа тоже ПЗУ цепляет..
Ну 8 это максимум, и я думаю что ПЗУ не расставляет границы кроме того загрузчика который загружен.
Как это не расставляет границы? Если про 1801РР1, то оно занимает 8К с начального адреса. А если хотите впихнуть 512 байт по адресу 173000, то надо еще делать дешифратор диапазона адреса и триггер разрешения ПЗУ, который защелкнется по SYNC.
---------- Post added at 01:28 ---------- Previous post was at 01:24 ----------
4К с 160000 по 170000 плата МС1201.02 никак не использует и в прошивке -055 есть опция старта с автопоиском ПЗУ, которая позволяет стартовать с первого найденного ПЗУ:
Это не автопоиск ПЗУ. А то на команде MTUS сразу же выскочит HALT_TRAP4.
Сделал конфиг ДВК-2_НХ
Туда же добавил прошивку и образ диска.
Спасибо Патрону за помощь.
Это не автопоиск ПЗУ. А то на команде MTUS сразу же выскочит HALT_TRAP4.Команда
ROM:140446 Mov #140520, @#word_170002
устанавливает адрес перехватчика HALT_TRAP4
Вот пример на ту же тему из VM2MEM.MAC :
Mov @#170002, (PC)+
$ResH4: 0
.Addr #H4, R0
Mov R0, @#170002
Это не автопоиск ПЗУ. А то на команде MTUS сразу же выскочит HALT_TRAP4.
Надо было дальше предъявить код. В нем как раз идет обработка HALT_TRAP4. Так что похоже поиск ПЗУ. Но только в блоках с номера 0 по 6, а это значит конечный адрес всё-таки 140000.
конечный адрес всё-таки 140000.Значит - пришло время выпаивать из платы ПЗУ пульта и впаивать под него колодку.
Значит - пришло время выпаивать из платы ПЗУ пульта и впаивать под него колодку.
А зачем? Там рядом свободная есть.
Там рядом свободная есть.По-любому проще сделать свой вариант системного ПЗУ, чем пытаться засунуть загрузчик куда-то в пространство USER.
Это всё в теории, надо ещё достать 1801рр1(рф3)
Это всё в теории, надо ещё достать 1801рр1(рф3)
А зачем? Есть же РЕ-мулятор. Вот с ним можно поотлаживаться.
с ним можно поотлаживаться.Поотлажива ься ещё проще с эмулятором ДВК.
В самом системном ПЗУ по адресу 140000 достаточно изменить один из режимов пуска на переход в другое ПЗУ по адресу 120000 .
Разрешите вопрос уважаемому господину Patron :
В последней верии эмуля ДВК и плагина под Тотальный командир я копировал 8 кбайт файл данных "Х.DAT" в каталог RT-11 и обратно в каталог W ( с последующим перегоном на реальную дискету 3.5" 720 кб RT-11) . После нескольких удачных перегонов возникла разница к/с файла. Возможно ли такое, или это аппаратный сбой на стороне реального ДВК ? Тест ОЗУ ДВК проходит часами непрерывно - оно на СОЗУ 1 мбайт, в т.ч. под RT-11.
*
Вопрос с прошивкой РР1 программой пользователя можно решить при помощи магнитофона пользователя с 100% файлом данных в формате БК0010 - подойдите ко мне в оффис лично - пока чистые РР1 есть.
Но точка входа при автозагрузке одна - 173000, поэтому только какое-то одно устройство может грузиться полностью автоматически.Можно сделать переход от загрузчика к загрузчику по условию.
Например.
Сначала идет опрос диска DW, если с него можно загрузится то ДВК загружается если нет опрашивает MY0,MY1. Далее опрашивается НХ диск и если и с него не загрузится то программа переходит в первое ПЗУ. Дальше появляется приглашение пульта и пользователь сам выбирает оставшиеся диски. Но это уже будет через В$[диск] или с пульта набрав адрес диска.
Как то так.
---------- Post added at 04:08 ---------- Previous post was at 03:43 ----------
Вопрос с прошивкой РР1 программой пользователя можно решить при помощи магнитофона пользователя с 100% файлом данных в формате БК0010 - подойдите ко мне в оффис лично - пока чистые РР1 есть. Если без шуток, напишите в личку, готов купить.
Как то так.
---------- Post added at 04:08 ---------- Previous post was at 03:43 ----------
Если без шуток, напишите в личку, готов купить.
У меня браузер почти не поддерживает личные сообщения в этом форуме. Лучше пишите на MMTEMA@MAIL.RU
Кроме того, я о продаже не говорил - речь идет о предоставлении 1 экз. для опытов. Но обязательно с присуствием клиента - т.к. мероприятие не на 5 минут. У меня рабочих магнитофонов нет.
возникла разница к/с файла. Возможно ли такое, или это аппаратный сбой на стороне реального ДВК ?Для проверки точности копирования полезно после копирования выполнять двоичное сравнение оригинала и копии. В Total Commander это делается командой меню Файл -> Сравнить по содержимому, а в RT-11 командой DIFF/BIN.
Содержимое загрузчика DW
012740
156020
012750
000010
005750
000727
012772
000001
156006
012772
000040
164334
153413
001001
173012
000025
164001
153413
170000
004027
162734
165176
020045
141400
003402
000012
Что то я не вижу обращения к регистру 174000.
---------- Post added at 14:36 ---------- Previous post was at 14:28 ----------
Патрону
В папке WorkDir когда в названии файла больше 6 символов то этот файл не видится в RT.
Но точка входа при автозагрузке одна - 173000, поэтому только какое-то одно устройство может грузиться полностью автоматически.
Да и не одно легко :)
Содержимое загрузчика DW
..........
Что то я не вижу обращения к регистру 174000.
Да действительно, криво перетащился через плагин, с перекодировкой. В том же сообщении обновленный DWBOOT.ZIP (http://zx-pk.ru/attachment.php?attachmentid=50533&d=1420461664).
Сделал конфиг ДВК-2_DW.
Спасибо Alex_K за прошивку.
Сделал конфиг ДВК-2_DW.
Спасибо Alex_K за прошивку.
Прошивка надеюсь исправленная. И грузится?
Если бы не грузилась я бы не выкладывал.
P.S.Прошивку не трогал (обновлённую).
Алекс а как на счет MY? :)
Если бы не грузилась я бы не выкладывал.
P.S.Прошивку не трогал (обновлённую).
Алекс а как на счет MY? :)
Для MY надо ещё запрашивать номер устройства. Поэтому в код надо сперва внести запрос номера.
Да по идеи там всего 3 команды, можно самому сделать. Выбор дисковода будет MY0.
Да по идеи там всего 3 команды, можно самому сделать. Выбор дисковода будет MY0.
В R1 перед этим ложится адрес регистра команд 0172140, а в R0 - номер устройства:
400$: BIT #40,@R1
BEQ 400$
MOV #37,@R1
412$: TSTB @R1
BPL 412$
MOV R0,@#172142
422$: BIT #100040,@R1
BEQ 422$
BMI 400$
CMP #NOP,@#0
BNE 400$
CLR PC
Поторопился я с конфигом DW, грузится он грузится только не работают кнопки сброс, пульт. Так что пока отбой.
В папке WorkDir когда в названии файла больше 6 символов то этот файл не видится в RT.Так и должно быть. Если в имени файла больше 6 букв - это точно не файл RT-11.
Так и должно быть. Если в имени файла больше 6 букв - это точно не файл RT-11. Можно сделать как в Дос в длинных именах. Там 6 знак заменяется на тильду.
...
Подскажите пожалуйста по кнопкам в конфиге DW.
Можно сделать как в Дос в длинных именах. Там 6 знак заменяется на тильду.Так сделать нельзя по двум причинам:
1. В именах файлов RT-11 разрешены только буквы и цифры.
2. Пользователи любят иметь в одном каталоге Windows несколько версий одного файла с именами типа GAME_V1.SAV, GAME_V2.SAV ( и т.п. ) переименовывая в GAME.SAV ту из версий, которую хотят увидеть в каталоге RT-11 и запустить.
---------- Post added at 19:10 ---------- Previous post was at 18:56 ----------
я копировал 8 кбайт файл данных "Х.DAT" в каталог RT-11 и обратно в каталог W ( с последующим перегоном на реальную дискету 3.5" 720 кб RT-11) . После нескольких удачных перегонов возникла разница к/с файла.Если исходное содержимое файла при всех копированиях было одинаковым - искажение мало вероятно. Но если копировались разные оригиналы, то какой-то из них мог быть ошибочно распознан плагином, как текст КОИ-8 и перекодирован. В плагине есть опция копирования без перекодирования - для её активации надо каждый раз вместо <F5> использовать <Shift><F5>.
В эмуляторе, при копировании в каталог Windows, отключить перекодирование невозможно, поэтому для работы с образами ПЗУ лучше использовать DSK-диск.
Ни плагин, ни эмулятор не используют перекодирование при работе с файлами *.SAV, *.SYS, *.SML, *.OBJ, *.DSK - если дать файлу прошивки одно из этих расширений - он точно не будет перекодирован при копировании.
RT-11 позволяет работать с именами файлов за пределами 6.3 и RADIX-50, но при этом потребуется отдельный драйвер.
В ходе эксперимента собрал такую конфигурацию.
МС1201.02
КЖД+ЖД
Опробовал регистры.
@174000/000401
174002/000000
174004/000000
174006/000000
174010/000000
174012/000000
174014/000000
174016/050000
174020/000200
174022/
BUS ERROR
@
Кто знает, что надо ввести чтоб с него загрузится.
Спасибо.
P.S.Можно в другой теме продолжить.
В ходе эксперимента собрал такую конфигурацию.
МС1201.02
КЖД+ЖД
Опробовал регистры.
Кто знает, что надо ввести чтоб с него загрузится.
Так как с MY не получится, не поддерживает ПДП. Команду чтения сектора ввести можно, но с помощью пультового отладчика не перешлёшь загрузчик в память для исполнения.
Так как с MY не получится, не поддерживает ПДП. Команду чтения сектора ввести можно, но с помощью пультового отладчика не перешлёшь загрузчик в память для исполнения. А как тогда делает аппаратный загрузчик?
А как тогда делает аппаратный загрузчик?
Дает команду чтения сектора, а затем пересылает в память. В R1 значение 0174020:
1522$: MOV #10,@R1
1526$: TST @R1
BMI 1526$
MOV #1,@#174006
MOV #40,@#174016
1546$: TST @R1
BMI 1546$
CLR R2
MOV #400,R3
1560$: TSTB @R1
BPL 1560$
MOV @#174010,(R2)+
SOB R3,1560$
CMP #NOP,@R3
BNE 1522$
CLR PC
Что то похоже это с прошивки.
...
Как с DESSa сохранить перевод?
---------- Post added at 22:23 ---------- Previous post was at 21:11 ----------
Вот что с прошивки получилось.
012701 MOV #174020, R1
174020
012711 MOV #000010, (R1)
000010
005711 TST (R1)
100776 BMI 000010
012737 MOV #000001,@#174006
000001
174006
012737 MOV #000040,@#174016
000040
174016
005711 TST (R1)
100776 BMI 000030
005002 CLR R2
012703 MOV #000400,R3
000400
105711 TSTB (R1)
100376 BPL 000042
013722 MOV @#174010, (R2)+
174010
077305 SOB R3,000042
022713 CMP #000240, (R3)
000240
001347 BNE 000000
005007 CLR PC
Следующий код для ПЗУ грузит RT-11 с DW при любой позиции в памяти:
DWBoot.bin (http://emulator.pdp-11.org.ru/misc/DWBoot.zip)
Отлично! Теперь буду пробовать прошить в плату МС3404.04
буду пробовать прошить в плату МС3404.04А МС3404.04 с каким процессором работает, ведь ( если правильно понимаю ) МС3404.04 занимает на шине 36К адресов - вряд ли в пространстве USER есть столько свободного места для ПЗУ.
Вообще она для Эл.60 но люди запускали и на МС1201.1,МС1201.2. На МС1201.3 не получилось из за 22бита.
Описание - Здесь (http://archive.pdp-11.org.ru/BIBLIOTEKA/MC3404/)
Надо отметить, что приведённый ранее код грузит только RT-11.
В том же архиве теперь вариант, загружающий что угодно:
DWBoot.bin (http://emulator.pdp-11.org.ru/misc/DWBoot.zip)
...
В том же архиве теперь вариант, загружающий что угодно:А какие ещё можно загрузить системы, кроме RT ( клоны RT), Тмос.
...
Если будет время гляньте загрузчик приведённый ниже (не из архива) МC3404.04. Что то при загрузке вылет(?) 000001. Но может это так и должно быть.
Что то при загрузке вылет(?) 000001У меня так вылетает, когда включён таймер.
---------- Post added at 19:19 ---------- Previous post was at 19:14 ----------
А какие ещё можно загрузить системы, кроме RTСейчас никакие, но вдруг появится что-то вроде Unix.
LSX на ДВК-2М с DX без проблем работает - надо только драйвер DW сделать.
Сейчас никакие
RSX-11S - не требует поддержки диска :)
RSX-11S - не требует поддержки дискаА как мог бы выглядеть загрузочный образ DW с RSX-11S для эмулятора ДВК-2 ..
А как мог бы выглядеть загрузочный образ DW с RSX-11S для эмулятора ДВК-2 ..
Я когда начинал свои эксперименты с RSX на ВМ3, делал загрузчик из под RT-11.
---------- Post added at 22:50 ---------- Previous post was at 22:48 ----------
Только RSX-11 на машине без MMU довольно жалкое зрелище - слишком мало возможностей можно в нем запользовать. А RSX-11S и вовсе урезанный вариант системы.
RSX-11 на машине без MMU довольно жалкое зрелищеИметь набор загрузочных образов DW с различными вариантами RSX для ДВК-2 - всяко лучше, чем не иметь.
Иметь набор загрузочных образов DW с различными вариантами RSX для ДВК-2 - всяко лучше, чем не иметь.
Надо драйвер для DW написать, тогда и RSX-11M можно сделать.
У меня так вылетает, когда включён таймер.В этом случае таймер не влияет.
Сейчас никакие, но вдруг появится что-то вроде Unix.
LSX на ДВК-2М с DX без проблем работает - надо только драйвер DW сделать. Почему именно DW?., может сначала HD. На dbit.com есть исходники HD.
LSX на ДВК-2М с DX без проблем работает - надо только драйвер DW сделать. Да действительно, подключил на DX, всё пошло.
Образ - Здесь (www.mailcom.com/lsx/lsximgs.tar.bz2)
На DX0 подключать (распакованный) образ ROOT.DSK
На DX1 подключать (распакованный) образ USR.DSK
На приглашение BOOT: ответить lsx
...
Видео запуска LSX на PDP 11/03 -Здесь (http://www.youtube.com/watch?v=e8eIyAdwLoI)
...
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_17.01.15_16-28
Изменения:
1. Теперь файлы с расширениями .BIN и .DAT не могут быть перекодированы при работе приводов HD и HX с каталогом Windows.
2. В модуль CPU11_module.em добавлен объект BreakPoint, создающий на шине ловушку адреса. Пример использования BreakPoint добавлен в файл конфигурации DisAsm.cfg
По умолчанию каждый объект типа BreakPoint имеет следующие настройки:
[BRK.ini]
InitialStateOf[Enabled] =1
SaveChangesFor[Enabled] =0
InitialStateOf[PauseCPU]=1
SaveChangesFor[PauseCPU]=1
FirstAddr =0177726
Last_Addr =0177727
IO_Mode = Any
IO_Size = Any
IO_Data = Any
Skip_FirstHits = None
Catch_NextHits = All
Show_LastSteps = Max
Show_NextSteps = Default
Show_HitReport = Yes
Возможные значения:
Enabled
1 - Ловушка включена.
0 - Ловушка отключена.
PauseCPU
1 - Эмуляция ставится на паузу при каждом срабатывании ловушки.
0 - Эмуляция не останавливается.
FirstAddr
0000000..0177777, 0x0000..0xFFFF - Начальный адрес зоны перехвата.
Last_Addr
0000000..0177777, 0x0000..0xFFFF - Конечный адрес зоны перехвата.
IO_Mode
Any, READ, WRITE - Тип обращения.
IO_Size
Any, WORD, BYTE - Размер данных.
IO_Data
Any, -32768..65535, -077777..0177777, -0x7FFF..0xFFFF - Конкретное содержимое данных для перехвата.
Skip_FirstHits
None, 0 - Не пропускать первые срабатывания.
1..nn - Игнорировать nn первых срабатываний ловушки.
Catch_NextHits
All - Не игнорировать последующие срабатывания.
None, 0 - Игнорировать последующие срабатывания.
1..nn - Повторять срабатывание ловушки nn раз.
Show_LastSteps
Max, None, 0..nn - При срабатывании ловушки выводить в поток дизассемблера трассу предыдущих nn шагов.
Show_NextSteps
Default - Не изменять режим дизассемблера.
All - Включить дизассемблер.
None, 0 - Выключить дизассемблер.
1..nn - Включить дизассемблер для nn последующих шагов, после чего выключить.
Show_HitReport
Yes, true, ON, 1 - Вывести в листинг дизассемблера отчёт о срабатывании ловушки.
No, false, OFF, 0 - Не выводить отчёт о срабатывании ловушки.
Обнаружены ошибки в конфигурациях LoadScript и CmdLine, где первый выдав на экран скрипт -закрывается. Второй пишет в консоли что "Файл скрипта не указан".
...
Еще просьба, можно сделать RAM диск под драйвер VD где адресация 176640.
Спасибо.
LoadScript - выдав на экран скрипт -закрываетсяLoadScript.cfg выполняет в RT-11 команды из файла Script.txt, который в комплекте поставки выглядит так:
ASS HD1 DK:
DIR/FU/BL/VOL
DU/TE HD1:/END:6
EXIT
Последняя команда вызывает завершение программы эмулятора. Если убрать её из файла Script.txt - тогда после выполнения всех команд скрипта эмулятор продолжит работу.
CmdLine пишет в консоли что "Файл скрипта не указан".ODT_Loader теперь имеет специальный режим извлечения скрипта из файла ODT_Loader.ini, который активируется при двойном клике в Windows на файле с расширением, зарегистрированным в Windows для открытия программой эмулятора.
При двойном клике на таком файле Windows ( например, на файле TETRIS.SAV или GAME.BAS ) эмулятор загружает файл конфигурации CmdLine.cfg и через внутренний параметр передаёт команду в ODT_Loader для извлечения скрипта из файла ODT_Loader.ini. При обычной "ручной" загрузке CmdLine.cfg этого не происходит и поэтому ODT_Loader сообщает об отсутствии скрипта для загрузки.
Использую эмулятор для компиляции тестов при помощи родного MACRO-11. Написал .com файл и запускаю эмулятор из makefile, как часть процесса общей сборки. Возникли некоторые вопросы:
- эмулятор каждый раз мне отключает режим NumLock, можно как-то сделать чтобы он восстанавливал этот режим после выхода?
- можно как-то логировать в файл то что выводится в терминал в эмуляторе? Там бывают всякие ошибки (и компиляции и командной строки), их полезно рассмотреть подробнее, а не ловить в мелькающем окне
- можно как-то запускать эмулятор чтобы он не открывал окно, молча делал компиляцию в фоне и потом завершался, а то мигание окошка при makefile вызывает некоторый дискомфорт?
Update: по логу разобрался, все нормально
эмулятор каждый раз мне отключает режим NumLock, можно как-то сделать чтобы он восстанавливал этот режим после выхода?Пока нет. Проблема сложна тем, что если одновременно запущены несколько эмуляторов, то простое запоминание текущего состояния NumLock при запуске очередного эмулятора в общем случае приводит к невозможности восстановления исходного состяния NumLock после завершения всех эмуляторов. Попробую решить этот вопрос к следующему релизу.
можно как-то запускать эмулятор чтобы он не открывал окно, молча делал компиляцию в фоне и потом завершалсяПридётся подождать появления консольного "эмулятора RT-11", предназначенного исключительно для запуска команд и консольных утилит RT-11 в консоли Windows.
случае приводит к невозможности восстановления исходного состяния NumLock
Меня устроит и приведение NumLock в какое-то фиксированное состояние, в моем случае всегда "включено". Может быть, ткнете меня в WinAPI как NumLock можно принудительно включить, тогда я утилитку себе напишу, буду просто в командном файле ее вызывать. Или в конфиг вставьте - в какое состояние NumLock приводить при выходе.
Придётся подождать появления консольного "эмулятора RT-11", предназначенного исключительно для запуска команд и консольных утилит RT-11 в консоли Windows.
Да пока флажок в конфигурации какой-нибудь, чтобы было невидимым или хотя бы свернутым. Посмотрел - оно же и свернутое продолжает процессор нагружать значит должно работать по идее.
Еще предложение - чтобы эмулятор мог возвращать код ошибки, устанавливаемый или возвращаемый утилитами RT-11, тогда make может увидеть ошибку и более красиво и информативно остановиться.
как NumLock можно принудительно включить
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
keyState[VK_NUMLOCK] = 1;
SetKeyboardState((LPBYTE)&keyState);
чтобы окно было невидимым или хотя бы свернутым.Запустить любую оконную программу в свёрнутом окне можно средствами Windows. Для проверки сейчас сделал на своём рабочем столе ссылку на pdp11.exe, сделал на этой ссылке правый клик и в свойствах выбрал "Окно->Свёрнутое в значок". Наверняка, запустить эмулятор через такую ссылку можно не только вручную.
Еще предложение - чтобы эмулятор мог возвращать код ошибки, устанавливаемый или возвращаемый утилитами RT-11.Такое возможно только при использовании специального ( ещё не написанного ) монитора RT-11, передающего код завершения из RT-11 в эмулятор. Вряд ли такая опция появится раньше консольной версии эмулятора.
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
keyState[VK_NUMLOCK] = 1;
SetKeyboardState((LPBYTE)&keyState);
У меня такое под Win7 не заработало, MSDN вот чего пишет:
Because the SetKeyboardState function alters the input state of the calling thread and not the global input state of the system, an application cannot use SetKeyboardState to set the NUM LOCK, CAPS LOCK, or SCROLL LOCK (or the Japanese KANA) indicator lights on the keyboard. These can be set or cleared using SendInput to simulate keystrokes.
Вот такое работает:
int main(int argc, char *argv[])
{
BYTE keyState[256];
BOOL result;
result = GetKeyboardState((LPBYTE)&keyState);
if (result && (keyState[VK_NUMLOCK] == 0))
{
keybd_event(VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | 0, 0);
keybd_event(VK_NUMLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}
return 0;
}
Запустить любую оконную программу в свёрнутом окне можно средствами Windows.
Да, спасибо за идею, я на FAR-е сижу, поэтому сложно до такого додуматься :)
Вот такое работаетТочно. В эмуляторе это выглядит ( и работает ) так:
void SetNumLock( bool bState )
{
BYTE keyState[256];
GetKeyboardState((LPBYTE)&keyState);
if( (bState && !(keyState[VK_NUMLOCK] & 1)) ||
(!bState && (keyState[VK_NUMLOCK] & 1)) )
{
// Simulate a key press
keybd_event( VK_NUMLOCK,
0,
KEYEVENTF_EXTENDEDKEY | 0,
0 );
// Simulate a key release
keybd_event( VK_NUMLOCK,
0,
KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
0);
}
}
Пока нет. Проблема сложна тем, что если одновременно запущены несколько эмуляторов, то простое запоминание текущего состояния NumLock при запуске очередного эмулятора в общем случае приводит к невозможности восстановления исходного состяния NumLock после завершения всех эмуляторов.
Зачем ориентироваться на несколько эмулей? Это не типовой случай. Пусть в нескольких будет неопределено, а в одном после выхода определено.
...
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_30.01.15_21-00
Изменения:
1. Исправлено восстановление состояния лампочек клавиатуры при завершении эмулятора.
2. Исправлена эмуляция выполнения процессорами команд с адресацией типа @(Rx)+ при возникновении Trap_to_04.
3. Теперь при работе приводов HD и HX с каталогами Windows - файлы на виртуальном диске не изменяют своего положения на диске при синхронизации диска с каталогом ( теперь виртуальный диск автоматически не сквизится ). При присутствии в каталоге Windows файла BootSectors.bin - в нём запоминается количество сегментов в каталоге RT-11 и положение файлов на виртуальном диске.
Релиз обновлён.
Теперь при присутствии в каталоге Windows файла BootSectors.bin - в нём запоминается количество сегментов в каталоге RT-11 и положение файлов на виртуальном диске.
К сожалению не всё работает.
При использовании драйвера MY c DZ эмулятором не могу загрузится через BOOT MY:. Курсор мигает и всё, загрузочный образ MY из комплекта эмулятора PDP11.
Так-же не могу подсоединить образ от эм.МС0515 на диск MY (для проверки подхвата образа DZ драйвером MY).
Источники
Драйвер+ текст Здесь (www.tis.kz/progs/dvk/MY3-04.rar)
Образ для проверки в составе эм.МС0515 Здесь (zx-pk.ru/attachment.php?attachmentid=36608&d=1342981407)
При использовании драйвера MY c DZ эмулятором не могу загрузится через BOOT MYДиски DZ односторонние, а с такими дисками эмулятор MY может работать только в формате TRK.
Нужно создать пустой TRK-образ, отформатировать его - и всё должно получиться.
Диски DZ односторонние, а с такими дисками эмулятор MY может работать только в формате TRK. То есть сторонние образы типа DSK не подключить.
Нужно создать пустой TRK-образ, отформатировать его - и всё должно получиться. При команде INIT MY1: пишет ?DUP-F-Input error MY1:
Вроде в этой теме проскакивала проблема эмуляции клавиши Pause, опрашиваемая посредством виртуального кода VK_PAUSE.
Поразбирался с этим вопросом, и выяснил, что это единственная клавиша, отпускание которой в принципе через виртуальные коды клавиш не передается. А при нажатии генерируется код нажатия и отпускания сразу друг за другом. Если опрашивать клавиатуру через DirectInput, то там клавиша паузы опрашивается корректно.
При команде INIT MY1: пишет ?DUP-F-Input error MY1:А диск отформатирован ?
---------- Post added at 12:41 ---------- Previous post was at 12:20 ----------
То есть сторонние образы типа DSK не подключить.DSK-образы дисков DZ должны распознаваться как DSK-образы MY40.
Но речь, наверняка, идёт не о DSK-образах дисков DZ, а о DZ-образах дисков DZ. Отличить их можно только по отчёту DSK-плагина, который помещается в буфер обмена после открытия образа.
Для DSK-образа диска DZ отчёт такой:
Image : VM.DSK
Format : DSK
Size : 400 Kb
Volume ID: RT11A
Owner :
File Blocks Date Bytes
---------- ------ ----------- ----------
RT11FB.SYS 87 04-Apr-1986 44'544
SWAP .SYS 26 27-Jul-1984 13'312
Для DZ-образа диска DZ отчёт такой:
Image : DZ_test0.dsk
Format : DZ
Size : 400 Kb
Volume ID: RT11A
Owner :
File Blocks Date Bytes
---------- ------ ----------- ----------
DINIC .DSK 300P 10-Feb-1989 153'600
GREDIT.DSK 300P 10-Feb-1989 153'600
А диск отформатирован ? Сначала диск должен быть инициализирован а потом форматирован.
DSK-образы дисков DZ должны распознаваться как DSK-образы MY40.
Но речь, наверняка, идёт не о DSK-образах дисков DZ, а о DZ-образах дисков DZ. Отличить их можно только по отчёту DSK-плагина, который помещается в буфер обмена после открытия образа.
Для DSK-образа диска DZ отчёт такой:
Image : VM.DSK
Format : DSK
Size : 400 Kb
Volume ID: RT11A
Owner :
File Blocks Date Bytes
---------- ------ ----------- ----------
RT11FB.SYS 87 04-Apr-1986 44'544
SWAP .SYS 26 27-Jul-1984 13'312
Для DZ-образа диска DZ отчёт такой:
Image : DZ_test0.dsk
Format : DZ
Size : 400 Kb
Volume ID: RT11A
Owner :
File Blocks Date Bytes
---------- ------ ----------- ----------
DINIC .DSK 300P 10-Feb-1989 153'600
GREDIT.DSK 300P 10-Feb-1989 153'600
Давайте всё по порядку.
Формат DZ в отличии от MY имеет смещение на одну дорожку, то есть зап./чтен. начинается с 1 дорожки а не с 0. Далее нумерация идет 1-3-2-4... хотя физически они идут друг за другом. Во времена когда разрабатывался дисковод RX50 его сделали с одним двигателем по середине на два кармана. Получается что места для установки головок 2й стороны (нижней для верхнего кармана и верхней для нижнего кармана) не хватило. А драйвер ( в DEC ) написанный для двух сторон решили упростить. Соответственно 0 дорожка с нижней стороны пропускается и дальше идет якобы чтение с двух сторон но с одной головкой. Вот и выходит чередование 1-3-2-4. ПВК Электроника 85 унаследовала такую "эмуляцию" при двух раздельных дисководах хотя можно было сделать по человечески. Но даже и в этих дисководах не стали припаивать головки 2й стороны.
Что касаемо образов то присоединение невозможно из-за разного размера.
DZ-409 600 байт
MY-819 200 байт
Из-за этого консоль ругается.
Отличить их можно только по отчёту DSK-плагина Ни о чём ни говорит, размер у обоих 400кб.
И ещё, драйвер с поддержкой DZ не грузит MY образ, об этом я писал выше.
С начало диск должен быть инициализирован а потом форматирован.
Скорее все-таки сначала ;)
Но с точностью до наоборот - сначала диск должен быть форматирован (физически размечены заголовки дорожек), потом инициализирован (создана файловая система, что сейчас неправильно принято называть форматированием).
консоль ругаетсяДа, точно - диски MY40 пока тоже поддерживаются эмулятором только в TRK-формате.
---------- Post added at 14:00 ---------- Previous post was at 13:57 ----------
Ни о чём ни говорит, размер у обоих 400кб.Отличие выделено синим цветом, но его может заметить только DSK-плагин, эмулятор не может.
---------- Post added at 14:04 ---------- Previous post was at 14:00 ----------
Сначала диск должен быть инициализирован, а потом форматирован.Пустую болванку надо сначала отформатировать, а потом проинициализировать.
---------- Post added at 15:25 ---------- Previous post was at 14:04 ----------
В принципе - можно добавить в эмулятор MY поддержку образов MY40, BY40, DZ80 блочных и DZ80 секторных, но только при их соответствующем переименовании.
Тогда эмулятор MY для образов размером 409600 будет предлагать заменить им расширение на .MY или .BY для образов MY40 и BY40, на .DZ для секторных образов DZ80 и на .DZB для блочных образов DZ80.
Patron, я правильно понял, что шлифовка работы эмулятора с NT папкой - глобальный задел под мировую революцию Консольный Эмулятор? :redface:
я правильно понял, что шлифовка работы эмулятора с NT папкой - глобальный задел под Консольный Эмулятор?Это так. Но когда все файлы на виртуальном диске не прыгают туда-сюда при каждом добавлении нового файла - это полезно и при загрузке RT-11 из каталога Windows, и при монтировании в приводы LD образов DSK, находящихся в каталоге Windows.
при монтировании в приводы LD образов DSK, находящихся в каталоге Windows.
LD автоматически в момент загрузки и после SQUEEZE обновляет ссылки на файлы DSK. Или раньше все могло прыгать на ходу и без этого?
Или раньше все могло прыгать на ходу и без этого?Когда номера начальных блоков файлов не запоминаются и при каждой синхронизации с каталогом Windows каталог RT-11 создаётся заново - позиция каждого файла на вновь создаваемом диске определяется исключительно каталогом Windows.
И если в FAT вновь добавляемые файлы помещаются в конец каталога Windows, то в NTFS каталоги при каждом изменении автоматически сортируются по алфавиту. Поэтому, если скопировать в каталог RT-11 новый файл, то после его записи в каталог NTFS и создания обновлённого каталога RT-11 на основе обновлённого каталога Windows - новый файл моментально перескочит в каталоге RT-11 с последнего места на "алфавитное", сдвинув вниз по диску часть старых файлов.
Так а что мешает указать в каталоге Windows сортировать по времени последнего изменения?
Так а что мешает указать в каталоге Windows сортировать по времени последнего изменения?Это ( если правильно понимаю ) сортировка представления каталога Windows в панели файлового менеджера, сортировка же самого каталога в системе всегда неизменна - в FAT по порядку добавления файлов, в NTFS - по алфавиту.
сортировка же самого каталога в системе всегда неизменна
Ээ... это в каком месте она сортирует?
Еще кто-то пользует FAT?
Ээ... это в каком месте она сортирует?Насколько понимаю - в двоичном дереве.
Во всяком случае - последовательные вызовы FindNextFile (https://msdn.microsoft.com/en-us/library/windows/desktop/aa364428(v=vs.85).aspx) возвращают содержимое каталога NTFS исключительно и только в алфавитном порядке.
Скорее все-таки сначала ;)
Поправил.
Но с точностью до наоборот - сначала диск должен быть форматирован (физически размечены заголовки дорожек), потом инициализирован (создана файловая система, что сейчас неправильно принято называть форматированием). Согласен.
В эмуляторе достаточно сделать INIT для DSK. Похоже что при создании пустого образа, форматирование делается само собой. С TRK видимо не так.
Отличие выделено синим цветом, но его может заметить только DSK-плагин Что нужно сделать чтобы просмотреть плагином.
эмулятор не может.Видимо нужно встроить плагин в эмулятор.
Пустую болванку надо сначала отформатировать, а потом проинициализировать.Согла ен.
В принципе - можно добавить в эмулятор MY поддержку образов MY40, BY40, DZ80 блочных и DZ80 секторных, но только при их соответствующем переименовании.
Тогда эмулятор MY для образов размером 409600 будет предлагать заменить им расширение на .MY или .BY для образов MY40 и BY40, на .DZ для секторных образов DZ80 и на .DZB для блочных образов DZ80. Расширения лучше не трогать, пропадет обратная совместимость с другими эмуляторами.
---------- Post added at 22:51 ---------- Previous post was at 22:42 ----------
Еще кто-то пользует FAT? Fat и сегодня актуален. Используется в SSD, CF, SD... Итд. Так как NTFS журналируемая файловая система и для твердотельных накопителей не применяется.
Расширения лучше не трогать, пропадет обратная совместимость с другими эмуляторами.Никто не заставляет подключать к приводу MY образы размером 409600 байтов. Но если есть желание подключать - надо дать возможность эмулятору автоматически отличать блочные образы DZ80 от блочных образов MY40, что сделать по их содержимому невозможно в принципе - содержимое блочного образа MY40 ни одним байтом не отличается от содержимого блочного образа DZ80.
Разница только в том, что содержимое блочного образа MY40 надо положить на 40 дорожек с двух сторон диска, а точно такое же содержимое блочного образа DZ80 - на 80 дорожек с одной стороны диска.
Поэтому, подключать к приводу MY образы размером 409600 c расширением DSK недопустимо. Подключать можно только образы размером 409600 с расширениями .MY, .BY, .DZ и .DZB - прямо задающими алгоритм раскладки содержимого по дорожкам и сторонам эмулируемого диска.
Никто не заставляет подключать к приводу MY образы размером 409600 байтов. Изначально задача состояла в том чтобы драйвер MY (?MY-I-My/Dz-emulater handler. Un_Soft 1991. V3.04 ) подхватывал диски DZ. Эмулятору я думаю всё равно чей образ под расширением DSK. Но вот размер образа ему явно не нравится.
Изначально задача состояла в том чтобы драйвер MY (?MY-I-My/Dz-emulater handler. Un_Soft 1991. V3.04 ) подхватывал диски DZ. Эмулятору я думаю всё равно чей образ под расширением DSK. Но вот размер образа ему явно не нравится.У меня в архиве есть два разных типа образов DZ - блочные и секторные. Все они имеют расширение DSK, но в случае подключения к MY для использования драйвером My/Dz-emulater handler или драйвером KZ.SYS нужно, чтобы секторный образ DZ был подключен одним способом, а блочный - другим способом.
А ещё у меня в архиве есть образы MY40 и BY40, которые надо подключать к приводу MY третьим способом.
Все эти образы имеют одинаковый размер и в общем случае никак не могут быть различены по содержимому. Но эмулятор должен иметь возможность на лету определять, каким способом подключать каждый из этих образов.
...
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_04.02.15_19-49
Изменения:
1. Теперь к приводам MY можно подключать секторные и блочные образы дисков DZ, а также образы 40-дорожечных дисков MY и BY, для чего расширение файла образа надо изменить на .DZ, .DZB, .MY и .BY соответственно.
2. В каталог AT11SJ.5M и в образ HDSYS.DSK добавлен драйвер KZ.SYS со следующими настройками:
.SE KZ INFORM
KZ V01.00 (C) ВЦ МИЭТ, НОЯБРЬ 1987
ПОЛЕТАЕВ В.М. ТЕЛ. 534-65-36
SET-ПАРАМЕТРЫ: SYSGEN, INFORM, RETRY, DZ, MY
MY0: DZ1: DZ2: DZ3: RETRY=1
.
3. Файлы SB и FB мониторов v05.07 заменены на исправленные.
RX52 - Есть какое-то описание разметки что там где или может его примеры использования?
RX52 is E11’s name for double-sided RX50 disks, which were never sold by DEC, but may have been planned. MY is the device name for the DS DD 5.25" disks used on the Russian DVK PDP-11 clones; the low-level format is the same as the RX52 but there is no software sector interleaveОтсюда понятно, что диск RX52 - это диск MY с интерливом как у DZ.
3. Файлы SB и FB мониторов v05.07 заменены на исправленные.
Можно этот момент подробнее? Где именно заменены - на системном HD разделе?
Что там исправлено? То есть - я явно что то пропустил увы.
---------- Post added at 20:18 ---------- Previous post was at 20:17 ----------
Это касаемо ошибки установки и работы "чужеродных" драйверов?
Что там исправлено? Смотреть здесь (http://zx-pk.ru/showpost.php?p=779598&postcount=362).
Где именно заменены - на системном HD разделе?В образах HDSYS.DSK и MX80_System.DSK.
Что там исправлено?Исправлена ошибка в загрузчике, не позволявшая нормально использовать драйвер KZ.SYS
Сделал наконец загрузочный образ DZ.
Загружаться так.
Присоединяем образ DZ на привод MY*: (где звёздочка там номер привода)
Выходим в пульт и набираем:
@1000/****** <номер привода с образом DZ> <LF>
001002/****** 0 <LF>
001004/****** 401 <LF>
001006/****** 400 <CR>
@172140/000040 1 <LF>
172140/****** 1000 <CR>
@G
Далее после загрузки привод поддерживается драйвером KZ. Обращение к приводу также KZ:. Если надо присоединить образ MY то надо сделать установку SET KZ*: MY (где звёздочка там номер свободного привода) и подсоединить образ на этот привод.
Справка по KZ
http://s5.hostingkartinok.com/uploads/images/2013/12/59ae9c1aa3fbdf70adbd980f21a10daa.gif
http://s5.hostingkartinok.com/uploads/images/2013/12/25dcde5aa707e4d8631cf47d51af64c5.gif
P.S Спасибо Patron,у так как образ полностью сделан на эмуляторе, а также hobot,у за справочный материал.
временная ссылка на образ дискеты с formkz.sav > http://sderni.ru/261628
На дискете из последней пачки считанной TheGWBV и выложенной в теме по архиву в общем то среди явно УК-НЦ софта (в основном тестов), обнаружилась программа форматирования KZ версии 2.0 В. Полетаева.
http://pic.pdp-11.ru/images/kzform.png
видимо "случайно" на "техническо-диагностической" дискете УК-НЦ оказалась,
просто в трап вылетает на УК-НЦ и всё.На УКНЦ нет контроллера MY, поэтому нет и регистров MY по адресам 0172140 и 0172142.
Сделал наконец загрузочный образ DZ.
Немного "дополнил" образ DZ-дискеты от MIX,
места конечно стало меньше, но штатных возможностей чуть больше,
заменил некоторые версии программ на другие, добил штатных утилит,
добавил не штатных программ несколько.
Получился вот такой состав:
Image : Rt11sj4.dz
Format : DZ
Size : 400 Kb
Volume ID: RT11A
Owner :
File Blocks Date Bytes
---------- ------ ----------- ----------
RT11SJ.SYS 78 16-Dec-2012 39'936
SWAP .SYS 30 25-Mar-2003 15'360
SL .SYS 10 28-Dec-1987 5'120
EM .SYS 4 04-Mar-2012 2'048
TT .SYS 2 23-Jan-1980 1'024
KZ .SYS 3 12-Apr-1989 1'536
STARTS.COM 1 17-Feb-2015 512
DIR .SAV 19 04-Jul-2002 9'728
PIP .SAV 30 31-Oct-1998 15'360
UCL .SAV 16 18-Jan-1988 8'192
UCL .DAT 9 04-Dec-2011 4'608
DAY .SAV 4 13-Apr-2013 2'048
DUMP .SAV 9 27-Dec-1983 4'608
DUP .SAV 45 27-Dec-1983 23'040
RESORC.SAV 25 01-Mar-2012 12'800
BINCOM.SAV 24 18-Jan-1988 12'288
LP .SYS 2 19-Dec-1988 1'024
KZFORM.SAV 1 20-Sep-1992 512
LAT .SAV 1 20-Sep-1992 512
RUS .SAV 1 20-Sep-1992 512
RS .SYS 26 13-Sep-1994 13'312
LINK .SAV 59 31-Oct-1998 30'208
MACRO .SAV 63 21-Dec-2012 32'256
SYSMAC.SML 61 18-Jan-1988 31'232
DESS19.SAV 19 04-Mar-1994 9'728
NYS .SAV 22 22-Oct-1993 11'264
SYSLIB.OBJ 47 19-Dec-1988 24'064
DSTAT .SAV 8 29-May-1989 4'096
SRCCOM.SAV 26 31-Oct-1998 13'312
LD .SYS 8 19-Dec-1988 4'096
< UNUSED > 133 68'096
---------- ------ ----------- ----------
30 Files, 653 Blocks
133 Free blocks
Все инструкции тут http://zx-pk.ru/showpost.php?p=781696&postcount=621
Временная ссылка на дискету http://sderni.ru/261796
Вопрос в снятие снимка экрана.
Суть проблемы в том, что при моих текущих настройках шрифта и прочего у меня окно эмулятора развёрнуто на весь экран по умолчанию, но иногда удобно и нужно - например что бы показать на скриншоте,
скорость выбранную для процессора и текущую HDn папку или шрифт сделать снимок окна целиком - но при full_screen - снимок экрана полностью перехвачен эмулятором, может быть всё таки сделать для этой функции комбинацию кнопок -> которую пользователю не обязательно было бы запоминать, добавив просто в меню эмулятора - две функции или кнопки.
* - снимок экрана терминала в граф. форме в буфер винды
* - сохранение сессии работы в текстовом формате в буфер винды (пожалуйста переведите ползунок в крайнее верхнее положение!).
Это не к спеху. Надо просто продумать как это сделать 1 раз красиво и изящно, что бы сделать и забыть. Конечно я могу сменить шрифт и тогда
уменьшить окно, перевести фокус на раб. стол и сделать снимок. Именно поэтому не слишком критично, но удобства бы прибавило точно!
как это сделать 1 раз красиво и изящно, что бы сделать и забыть?Установить HardCopy Pro (http://rutracker.org/forum/viewtopic.php?t=2064190).
Установить HardCopy Pro.
Сторонние утилиты у меня стояли раньше, я уже думаю воскресить - Power Screen Capture - довольно простенькая - помимо снимков ещё avi )
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_20.02.15_14-38
Изменения:
1. Произведён апгрейд до текущей версии модульного API.
2. Повышена совместимость терминала с игрой Space Invaders - теперь таблица результатов задерживается на экране на 4 секунды.
3. Монитор AT11SJ.SYS заменён на новую версию. Теперь при ожидании ввода автоматически уменьшается только максимальная скорость эмуляции.
4. Заменены на новые версии DHRY.SAV и BASIC.SAV везде, а также TETRIS.SAV и XONIX.SAV в каталоге AT11SJ.5M и в образе HDSYS.DSK
...
...
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_23.02.15_18-57
Изменения:
1. Исправлена ошибка модульного API, приводившая в некоторых случаях к неправильному соединению сокетов.
2. Введены строгие правила описания соединений именованных сокетов, что привело к изменению описания соединения сокета [Power] в файле конфигурации MY.cfg :
Было:
BusBridge [Power] > MY_bus
Стало:
BusBridge [Power] > MY_bus [Power]
Patron, хотел уточнить по поводу замены ТЕТРИС и КСОНИКС.
КСОНИКС - поменялся на версию где на стартовой заставке МОСКВА (?), а вот ТЕТРИС,
вроде тот же? И в целом в чём причина замены? )
уточнить по поводу замены ТЕТРИС и КСОНИКСВ Тетрисе задержка увеличена в 3 раза, а Ксоникс сделан промежуточный между имевшимися оригинальным и англофицированым. Имеющийся англофицированный Ксоникс кривовато рисует заставку, поэтому я взял родной Ксоникс и привёл его к внешнему виду англофицированного.
В Тетрисе задержка увеличена в 3 раза, а Ксоникс сделан промежуточный между имевшимися оригинальным и англофицированым.
Понял! Единственное что в вашем подходе я считаю не совсем верно оставлять без изменений имена файлов, тетрис изменённый можно было обозвать TET3Z - или вариации на эту тему, а XONIX там вообще целый символ в запасе всегла ("смайл"),
XONIXM.SAV - и было бы ясно (+ текст этого поста http://zx-pk.ru/showpost.php?p=783417&postcount=630 - но это так я ворчу, поскольку хочу их залить в папку к символьным играм, не затерая прежних версий. )
http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/PATRON_TET3Z_XONIXM/
Эмуляция сети CM NET.
Описание -здесь (http://www.iaea.org/inis/collection/NCLCollectionStore/_Public/20/077/20077375.pdf)
Сделал конфиг и образ серверной ДВК а вот для клиентской ДВК нужен загрузчик DL-КС. Если у кого есть то скиньте сюда.
Единственное упоминание о DL-КС здесь. (http://zx-pk.ru/showthread.php?t=16198)
Patron, Возможна ли адаптация НХ загрузчика, т.к. с ним у меня загрузка не проходит.
Спасибо.
для клиентской ДВК нужен загрузчик DL-КСУстройство DL-КС не эмулируется, поэтому загрузчик вряд ли поможет.
Возможна ли адаптация НХ загрузчикаКакая адаптация, подробнее..
Устройство DL-КС не эмулируется, поэтому загрузчик вряд ли поможет. В DL-КС приём/передача словная, можно его не эмулировать. В описании есть вариант DL-11 где приём/передача по протоколу v.24.
Какая адаптация, подробнее.. Задача в том чтобы с адреса порта по команде L набирался загрузчик. Остальное уже делает сервер.
Задача в том чтобы с адреса порта по команде L набирался загрузчик.Если речь про что-то вроде ДВК, то любой код можно поместить в память и запустить через пульт при помощи ODT-скрипта.
Команда L работает с перфолентой, которая пока не эмулируется.
Если речь про что-то вроде ДВК, то любой код можно поместить в память и запустить через пульт при помощи ODT-скрипта Пользуюсь Shift+Insert. Но там скорей всего сетевой загрузчик где прописан ID компьютера.
Для связи пользователя сети с имеющимся ресурсом или
об'ектом используется тройка номеров: номер узла
пользователя, номер узла местонахождения об'екта и некоторый
номер об'екта. Совокупность этих трех номеров образует
канал пользователя. Канал считается открытым, когда
установлено соответствие между тремя указанными числами и
реальным об'ектом, и закрытым, когда такого соответствия
нет.
Команда L работает с перфолентой, которая пока не эмулируется. Эмуляция будет актуальна.
Когда центр сети CMNet запущен, можно приступить к
загрузке периферийных машин. Для этого запускается
аппаратный загрузчик пультового режима процессора 177000L
или команда LX загрузчика HDBOOT. Можно также вручную
ввести в память известный "DEC bootstrap loader" и запустить
его. В любом случае осуществляется выгрузка сетевого
загрузчика по перфоленточному формату через указанный
интерфейс. Так как большинство интерфейсов, в том числе
DL-КС, не поддерживают сигнал запуска считывателя, то нужно
дождаться тайм-аута не более 16 секунд. Потом печатается на
терминале
CMNet bootstrap
- приветствие системы -
CMNet>
Эмуляция будет актуальна.Написано, что перфолента не используется, а загрузка периферийной машины производится с центральной машины через обычный терминальный порт, но с использованием введённого с пульта периферийной машины перфоленточного загрузчика.
---------- Post added 01.03.2015 at 01:50 ---------- Previous post was 28.02.2015 at 23:55 ----------
Первичный сетевой загрузчик находится в драйвере линий и выгружается по перфоленточному протоколу в периферийную машину. Он содержит всю интерфейсно-зависимую часть сетевого загрузчика и печатает после запуска на терминале слово "CMNet".
Первичный сетевой загрузчик считывает вторичный сетевой загрузчик, находящийся в файле CMNET.BOT и доступный через специальный канал загрузчика SPEC.BOOT. Сообщение "error" появляется при невозможности отправить запрос на чтение, сообщение "read error" - при ошибке чтения загрузчика или отсутствии его.
Сообщение "bootstrap" выводит уже вторичный загрузчик. Далее он печатает на терминале приветствие системы и переходит в командный режим, о чем свидетельствует приглашение ввода команды "CMNet>"
А, кстати, чем под эти эмулятором редактировать тексты? Я в своё время пользовал, в основном, EDK, попробовал здесь, но не нашел кнопки ВЫБР...
И, кстати, есть ли эмулятор с поддержкой диспетчера памяти и русского VT52 или VT100? В идеале бы - подобно КСМ/КЦГД, с переключением РУС/ЛАТ по кодам 016-017... Очень хотелось запустить ДИАМС...
hobot, а ДИАМС в архиве есть?
А, кстати, чем под эти эмулятором редактировать тексты?Есть три варианта:
1. Подключать каталог Windows к приводу HD и править текстовый файл в каталоге Windows любым txt-редактором Windows ( тогда русские буквы будут на лету перекодироваться в КОИ-8 ).
2. Точно так же править файл, но не каталог с файлом подключать, а копировать файл в DSK-образ при помощи DSK-плагина для Total_Commander (http://zx-pk.ru/showthread.php?t=11015) ( тогда русские буквы будут на лету перекодироваться в КОИ-7 с кодами 016 и 017 ).
3. Использовать под эмулятором любой редактор для RT-11 ( совместимый с терминалом VT52 ), работающий с русскими буквами ( этот способ самый трудный ).
Использовать под эмулятором любой редактор для RT-11 ( совместимый с терминалом VT52 ), работающий с русскими буквами ( этот способ самый трудный ).
Тут ничего трудного нет - K52 легко сделать совместимым с русскими буквами, в исходниках даже есть коментарии где. С KED'ом сложнее - он использует 8 бит как признак инверсной подсветки, но речь про VT52, а значит KED пофигу. Кроме того есть TED и USED (остальные никогда не пользовал, потому не упоминаю).
Ну и конечно система должна быть патчена на предмет 8bit или быть многотерминальной (в плане сборки).
K52 легко сделать совместимым с русскими буквамиЗная о таких делах, я специально ввёл в эмулятор RT-11 (http://zx-pk.ru/showthread.php?t=24755) расширенную совместимость с K52. Даже если в окне эмулятора больше 24 строк - они все скролятся в K52 вверх и вниз.
hobot, а ДИАМС в архиве есть?
Я очень много очень древних откопал текстовых редакторов для ДВК.
Даже планирую их отдельной позицией с шпоргалкой-подписочкой сложить.
Уточните пожалуйста что такое ДИАМС? как его распознать - точнее или прибл.
название файла порграммы или в составе ПО, и лучше в теме по архиву )
этот способ самый трудный
NYS.SAV ) - он же EDIK - 8 битная версия, правда я консольный эмулятор
не использую.
Понятно... :)
AFZ, ДИАМС поделитесь?
Очень хотелось запустить ДИАМС...
Так что это за зверюга? Давайте уже в архив прилепим если это ПО какое-то для ДВК.
Так что это за зверюга? Давайте уже в архив прилепим если это ПО какое-то для ДВК.Легко. сегодня же вечером выложу - оно у меня дома. Только вот на реальном железе запустить - запросто, а вот эмулятора с поддержкой русских букв и диспетчера памяти одновременно - увы, похоже ёк! Не помню, на каком эмуляторе я его гонял, но только английский, а все наши - без ДП. 85-я, увы, не годится...
эмулятора с поддержкой русских букв и диспетчера памяти одновременно - увы, похоже ёк!Есть вариант SIMH (http://emulator.pdp-11.org.ru/misc/SIMH_Rus.zip) с поддержкой КОИ-7 и с возможностью отключения таймера у LSI-11.
Легко. сегодня же вечером выложу - оно у меня дома. А оно, оказывается, давно валяется у меня на Яндекс.Диске. https://yadi.sk/d/wGTeIhml7yKo6 Диамс для ДВК. Но, опять же, это просто свалка файлов. Как, допустим, валялась та самая кучка TSX-ов. Надо начать его устанавливать и задавать вопросы. Мне :)
Советую начать новую тему, поскольку DSM-11 работал на любой платформе от DEC с диспетчером памяти, кроме Э-85/PRO
AFZ,
Для примера
http://archive.pdp-11.org.ru/ukdwk_archive/dwkwebcomplekt/Dsm11/
- как то так )
Для примера
http://archive.pdp-11.org.ru/ukdwk_a...omplekt/Dsm11/
- как то так ) И это моё. :)
И это моё.
В самом низу источник обычно приписан, в данном случае
там указана форумная публикация!
а можно всё таки в двух словах, что это за зверь?
Я так понял это БД и ОС одновременно? К RT-11 никак не относится.
Есть вариант SIMH с поддержкой КОИ-7 и с возможностью отключения таймера у LSI-11. Вот, наконец попробовал.
В общем-то, погонять на этом ДИАМС уже можно.
---------- Post added at 14:38 ---------- Previous post was at 14:11 ----------
Поддержка КОИ-всех оказывается полная. И какой VT-xx оно поддерживает?
---------- Post added at 14:43 ---------- Previous post was at 14:38 ----------
Похоже, никакой. ESC просто рисуется на экране, как обычный символ, маленькой стрелочкой влево.
---------- Post added at 14:56 ---------- Previous post was at 14:43 ----------
Да, осталось прикрутить к нему (хотя бы) VT52, причем. желательно, с произвольным размером экрана.
осталось прикрутить к нему (хотя бы) VT52, причем. желательно, с произвольным размером экрана.В SIMH терминальный обмен можно направлять в IP-порт, поэтому ничто не мешает использовать любой SIMH с эмулятором VT52.
Небольшой бугрепорт-феатуре реяуест ;)
Что-то уже говорилось...
в Windows 8.1 если окно эмулятора активно, можно хоть затыкаться в кнопку Start мышью - не срабатывает
программа запоминает позицию окна, если запомненная позиция оказывается за пределами текущей конфигурации (отключил монитор на котором раньше запускал) - окно программы оказывается недоступным - приходится руками править ini файл
И еще вопрос - подключил я образ MY, а как отключить его потом (средствами самой программы)?
окно программы оказывается недоступным - приходится руками править ini файлДостаточно просто удалить этот файл. Тогда после запуска - окно эмулятора будет в центре экрана.
в Windows 8.1 если окно эмулятора активно, можно хоть затыкаться в кнопку Start мышью - не срабатываетЭто так во всех закладках или только в закладке терминала?
подключил я образ MY, а как отключить его потом (средствами самой программы)?Любой смонтированный образ, отображаемый на кнопке выбора образов, можно размонтировать, выполнив <Ctrl> Click на этой кнопке.
Достаточно просто удалить этот файл.
Ну я удалил просто две строчки из него, но по-моему можно сделать возможность чтобы сам отлавливал такой факт :)
Это так во всех закладках или только в закладке терминала?
Только в терминале.
можно сделать возможность чтобы сам отлавливал такой фактКонечено.
Надо будет добавить в ini-файл запоминание текущего разрешения экрана и сбрасывать запомненную позицию окна при изменении разрешения.
Только в терминале.Пока терминал имеет фокус ввода - у терминала моргает курсор и нажатия клавиш <Win>, <Alt> и <F10> не пропускаются в Windows.
Похоже, что у Windows 8 есть проблемы со снятием фокуса ввода при клике по кнопке [Start]. Решение простое - кликнуть сначала по десктопу рядом с кнопкой. Как только терминал потеряет фокус ввода - следующий клик по кнопке [Start] пройдёт без проблем.
ешение простое - кликнуть сначала по десктопу рядом с кнопкой.
Ну как бы очевидно, что так и поступаю - иначе как бы я узнал, что именно когда окно в фокусе не работает :)
иначе как бы я узнал, что именно когда окно в фокусе не работаетЭто Windows 8 не работает, потому что фокус ввода должен забираться системой у программы при любом клике за пределами окна программы ( что и происходит в менее глючных версиях Windows ).
что и происходит в менее глючных версиях Windows
А также в "более глючных" со всеми остальными программами :)
Причем даже наглядно - видно как сначала уходит фокус, а потом с запозданием происходит переключение... Но тут я не берусь утверждать чего-то категорично - в виндовсе я программы пишу исключительно в рамках UNIX-совместимых и расширять свой кругозор не намерен...
А также в "более глючных" со всеми остальными программамиВсе остальные программы не устанавливают глобальный хук клавиатуры и не позволяют своим окнам индивидуально управлять разрешением/запрещением передачи кодов системных клавиш в Windows.
Авторы Windows 8 решили эмулировать клик по кнопке [Start] через фейковое нажатие клавиши <Win>, но при этом забыли, что при клике за пределами окна надо сначала забрать у окна фокус и только потом выполнить фейковое нажатие.
Потому и получается, что в полном соответствии с логикой работы модульного API эмулятора - установленный окном терминала запрет на передачу кодов системных клавиш в Windows продолжает действовать и фейковое нажатие не проходит.
Все отстальные программы не устанавливают глобальный хук клавиатуры
Ошибочка. Тестирую именно с такой программой. Причем настолько криво устанавливающей хук, что даже предотвращает например переключение CapsLock в системе когда окно и не выбрано... Что касается фейкового нажатия Win, то в моем понимании тогда эмулятор должен отработать Start как Win, чего не происходит.
---------- Post added at 20:37 ---------- Previous post was at 20:35 ----------
Могу предположить что эмулируется нажатие чего-то другого и где-то оно документировано...
Ошибочка. Тестирую именно с такой программой.
Потестируйте на Вин8 EmuStudio. Она тоже ставит хук клавиатуры и отменяет нажатие клавиши Win.
Потестируйте на Вин8 EmuStudio.
А можно ссылку сразу на скачивание чтобы не перелопачивать темы? :)
А можно ссылку сразу на скачивание чтобы не перелопачивать темы? :)
http://zx.pk.ru/attachment.php?attachmentid=40948
тогда эмулятор должен отработать Start как Win, чего не происходит.Коды, вырабатываемые системными клавишами в окне терминала - задаются в файле Terminal.ini :
ANSI_STR_FOR_KEY[F10] = "\033\010"
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"
Могу предположить что эмулируется нажатие чего-то другого и где-то оно документировано...Терминал блокирует только следующие клавиши:
pConfigI->Disable_diKey_PassThru( DIK_LMENU );
pConfigI->Disable_diKey_PassThru( DIK_RMENU );
pConfigI->Disable_diKey_PassThru( DIK_LWIN );
pConfigI->Disable_diKey_PassThru( DIK_RWIN );
pConfigI->Disable_diKey_PassThru( DIK_APPS );
pConfigI->Disable_diKey_PassThru( DIK_F10 );
pConfigI->Disable_diKey_PassThru( DIK_NUMLOCK );
pConfigI->Disable_diKey_PassThru( DIK_CAPSLOCK );
pConfigI->Disable_diKey_PassThru( DIK_SCROLL );
Для всех остальных кодов клавиш - поведение глобального хука в окнах терминала и консоли не отличается.
Для всех остальных кодов клавиш - поведение глобального хука в окнах терминала и консоли не отличается
Вдаваться в это не хочется. Я рассуждаю так (может и неверно): если тычок в старт эмулирует нажатие клавиши Win, то эмулятор должен откликнуться на него как на нажатие клавиши Win (то есть выдать код CTRL/N). Этого не происходит - следовательно здесь не все так просто.
---------- Post added at 20:52 ---------- Previous post was at 20:50 ----------
И как бы в доказательство тому...
Потестируйте на Вин8 EmuStudio. Она тоже ставит хук клавиатуры и отменяет нажатие клавиши Win
Все отлично работает - Win перехватывается и не отдается в систему, тычок мышкой в Start прекрасно работает как обычно.
Все отлично работает - Win перехватывается и не отдается в систему, тычок мышкой в Start прекрасно работает как обычно.
Тогда попробуйте еще одну версию EmuStudio, эмулятор Союз-Неон. Она ставит не только хук клавиатуры, но и мышки (клик в окно, отбирает системную мышь).
http://sderni.ru/269139
Тогда попробуйте еще одну версию EmuStudio, эмулятор Союз-Неон. Она ставит не только хук клавиатуры, но и мышки (клик в окно, отбирает системную мышь).
Тут тоже все работает если мышка не отобрана. Ну а если отобрана - по понятным причинам ей нельзя ткнуть в старт :)
Этого не происходит - следовательно здесь не все так просто.Что не просто - это уже понятно. Но также понятно, что всё сводится к различиям работы хука в окнах терминала и консоли.
Кстати, нашлось ещё одно отличие - терминал блокирует автоповтор для системных клавиш:
pConfigI->Disable_diKey_AutoRepeat( DIK_LMENU );
pConfigI->Disable_diKey_AutoRepeat( DIK_RMENU );
pConfigI->Disable_diKey_AutoRepeat( DIK_LWIN );
pConfigI->Disable_diKey_AutoRepeat( DIK_RWIN );
pConfigI->Disable_diKey_AutoRepeat( DIK_NUMLOCK );
pConfigI->Disable_diKey_AutoRepeat( DIK_SCROLL );
pConfigI->Disable_diKey_AutoRepeat( DIK_CAPSLOCK );
Но это вообще никак не должно влиять, потому что хук сам определяет автоповтор и не может выбросить первое нажатие:
byte KeyState = (cFlags ^ 0x80) & 0x80;
byte KeyStatePrev = pSharedData2->diKeys[ diKey ];
pSharedData2->diKeys[ diKey ] = KeyState;
bool bAutoRepeat_Disabled = pSharedData2->abDisabled_AutoRepeat_diKeys[diKey];
if( cFlags >= 0 && (KeyStatePrev & 0x80) && bAutoRepeat_Disabled )
{// Запрет дальнейшей обработки автоповтора нажатия в Windows.
return 1;
}
Что не просто - это уже понятно.
Ну теперь есть за что зацепиться - EmuStudio тоже перехватывает, в том числе Win, но не препятствует нормальной работе кнопки Start.
Ну теперь есть за что зацепитьсяДа, если Windows 8 посылает фейковое нажатие сразу после отбора фокуса, то обработчик сообщения об отборе фокуса в терминале может не успеть снять запрет обработки клавиши ( это происходит в середине обработчика ). Однако, адрес приёмника сообщений о нажатых клавишах обработчик ( похоже ) очистить уже успевает ( это происходит в самом начале обработчика ), поэтому фейковое нажатие и не приходит из хука в терминал.
Если так, то достаточно добавить в глобальный хук синхронизацию с обработчиком отбора фокуса в терминале, чтобы фейковое нажатие обрабатывалось как надо.
фейковое нажатие
Интересно было бы еще отловить что нажимается если это самое нажатие есть. Мы уже выяснили как я понял, что нажатие Win не эмулируется так как эмулятор его не отрабатывает... Просто для информации.
Мы уже выяснили как я понял, что нажатие Win не эмулируется так как эмулятор его не отрабатывает...Это не совсем так - хук отправляет коды клавиш в активное окно, HWND которого должна сообщить программа.
При приходе сообщения об отборе фокуса - терминал сразу очищает HWND в хуке и потом начинает одну за другой снимать блокировки клавиш.
Поэтому возможна такая ситуация, что если код клавиши <Win> приходит в хук одновременно с началом выполнения обработчика отбора фокуса в терминале - то терминал не получает код <Win> потому, что уже очистил HWND в хуке, а хук выбрасывает фейковое нажатие, потому что терминал ещё не успел снять блокировку.
---------- Post added at 19:42 ---------- Previous post was at 19:25 ----------
Интересно было бы еще отловить что нажимается если это самое нажатие есть.Тест глобального хука клавиатуры GlobalKeyboardHook_Test (http://zx.pk.ru/attachment.php?attachmentid=39062) сообщает обо всех нажатиях в системе. Программа автоматически завершается через 20 сек после старта, поэтому при запуске вывод можно перенаправлять в файл.
Тест глобального хука клавиатуры GlobalKeyboardHook_Test сообщает обо всех нажатиях в системе.
На тычки в Start не реагирует, его срабатыванию не препятствует.
На тычки в Start не реагирует.Если правильно понимаю, при тычках в Start - курсор в терминале эмулятора продолжает мигать и заголовок окна эмулятора остаётся "активным". Получается, что при клике за пределами окна - фокус не забирается.
Если правильно понимаю, при тычках в Start - курсор в терминале эмулятора продолжает мигать и заголовок окна эмулятора остаётся "активным". Получается, что при клике за пределами окна - фокус не забирается.
Все хитрее. Фокус забирается и мгновенно возвращается обратно. Но только один раз. При следующем тычке фукус забирается и уже не возвращается назад, но на тычки не реагирует.
Все хитрее. Фокус забирается и мгновенно возвращается обратно. Но только один раз. При следующем тычке фукус забирается и уже не возвращается назад, но на тычки не реагирует.Тогда понятнее.
В модульном API не меньше хаков, чем в Windows. Поскольку меню в эмуляторе выводятся отдельными окнами, то чтобы главное окно при появлении меню не теряло статус "активного" - идёт сложная обработка сообщения WM_NCACTIVATE с возможностью вызова SetFocus().
Такие дебри надо отлаживать вживую. Придётся установить в виртуальную машину ещё и Windows 8.1
А также в "более глючных" со всеми остальными программамиИ всё же это глюк Windows 8.
Суть проблемы в том, что если в Windows 8.1, при нахождении фокуса ввода в любой программе, курсор наведён на кнопку [Start] и при этом возникает событие клавиатуры - Windows начинает всевозможно глючить. Если кликнуть любой кнопкой мыши по кнопке [Start] и сразу после этого нажать любую клавишу - тычок останется безответным, а фокус ввода тут же вернётся в окно последней активной программы.
Эмулятор позволяет выявить этот глюк тогда, когда в терминале горят лампочки [Caps Lock] и/или [Num Lock]. Терминал при потере фокуса выключает эти лампочки. Но так как выключение лампочек в Windows осуществляется фиктивными нажатиями на соответствующие клавиши, то возникновение события клавиатуры вскоре после тычка по кнопке [Start] - приводит к немедленному проявлению Start-глюка Windows 8.1 "во всей красе".
И всё же это глюк Windows 8
А может это глюк нечтения документированных изменений? А то и рекомендаций времен еще Win9x о том как надо поступать вместо "вот так тоже можно" ;)
PS. Не утверждаю, просто из обыта - 99% глюков так разрешлись на моей памяти :)
PPS. Независимо от того глюк или нет, мы имеем уже три программы которые и перехватывают и не блокируют Start...
А может это глюк нечтения документированных изменений?Это 100% глюк.
По ходу поиска способов, позволяющих обойти Start-глюк Windows 8 - обнаружился ещё один глюк Windows 8.
Дело в том, что в Windows 8 помимо фокуса вода существует ещё и "псевдо фокус", который получают значки при перемещении над ними курсора мыши. Когда значок имеет псевдо-фокус - тычок мышью достаётся значку. Казалось бы - как тут можно облажаться, ведь курсор не может появиться над значком без перемещения.
Но оказалось, что может. Чаще всего это происходит, если после тычка по кнопке [Start] не двигать мышь, дождаться завершения событий экрана и нажать клавишу <Esc>. При этом кнопка [Start] теряет псевдо-фокус и можно жать кнопки неподвижной мыши до посинения без малейшего результата. Но если сместить мышь хоть на пиксел - псевдо-фокус возвращается и ситуация приходит в норму.
---------- Post added at 17:11 ---------- Previous post was at 17:07 ----------
Независимо от того глюк или нет, мы имеем уже три программы которые и перехватывают и не блокируют Start...Глюк проявляется во всех программах без исключения, если в пределах 150 мс после клика по кнопке [Start] происходит событие клавиатуры. Если самому не нажимать на клавиши сразу после клика по кнопке [Start] - глюк проявляется только в программах модульного API при выключении лампочек клавиатуры, потому что движок модульного API перед отправкой псевдо-нажатия ждёт только 90 мс.
если
Да вопрос не в том глюк это или нет. Вопрос в том, что мы знаем, что сделать так, чтобы этот глюк или фича никак себя не проявлял - возможно, и абсолютно все остальные (известные нам на данный момент) программы которые выставляют хуки (их четыре - о SecureCRT которым пользуюсь как-то сразу и не вспомнилось) не создают подобных проблем. А уж как назвать решение: исправлением ли косяков в программе или добавкой workaround для кривой системы - дело десятое :)
все остальные (известные нам на данный момент) программы которые выставляют хуки (их четыре - о SecureCRT которым пользуюсь как-то сразу и не вспомнилось) не создают подобных проблемКак выяснилось - Start-глюк Windows 8 никак не связан с хуком. Глюк однотипно проявляется со всеми программами Windows без исключения, вне зависимости от наличия или отсутствия хука. Избежать проявления Start-глюка довольно просто - достаточно не нажимать кнопки клавиатуры в течение 150 мс после клика по значку [Start]. Терминал сам нажимает кнопки <Caps Lock> и <Num Lock>, когда надо погасить лампочки, поэтому для обхода Start-глюка Windows 8 в эмуляторе требуется незначительная модификация кода модульного API, которая будет выполнена в следующем релизе.
достаточно не нажимать кнопки клавиатуры в течение 150 мс после клика по значку [Start]
Ничего не понял. Как можно избежать глюка который проявляется когда клавиатуру вообще не трогаешь методом не трогания клавиатуры в течение какого-то времени?
Ничего не понял. Как можно избежать глюка который проявляется когда клавиатуру вообще не трогаешьДождаться версии программы, которая учитывает это условие при имитации нажатий на клавиши.
Обнаружилась ошибка в приводах DX/DY.
При запуске программы RTFMT диски не форматируются при выборе одинарной, так и двойной плотности.
Файл прилагаю.
Patron, просто интересно, а в среде ВИН-10 не тестили запуск и работоспособность, 8-рка это тупик и уже прошлое по сути - ориентир (если говорить про окошки) 10-ка и железо под неё (некст ген понимаешь пришёл).
Обнаружилась ошибка в приводах DX/DY. При запуске программы RTFMT диски не форматируются при выборе одинарной, так и двойной плотности.Привод DX в принципе не имеет команды форматирования, а для привода DY команда Set Density пока не эмулируется ( и вряд ли когда-то будет ).
---------- Post added at 21:31 ---------- Previous post was at 21:29 ----------
в среде ВИН-10 не тестили запуск и работоспособностьПока нет.
Привод DX в принципе не имеет команды форматирования Ну запись то он умеет. Например командой COPY/DEV можно записать образ форматированного диска.
Правда это не относится к данной программе, это я так к слову.
пока не эмулируется ( и вряд ли когда-то будет ). Какое здесь ключевое слово? :)
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_02.05.15_20-12
Изменения:
1. В модуль Port_module.em добавлен объект PC, эмулирующий перфоленту. Создание объекта PC добавлено в файлы конфигурации default.cfg и Бэйсик НЦ.cfg. В образ HDSYS.DSK добавлен драйвер PC.SYS.
2. Добавлен каталог Paper Tapes\, содержащий двоичные образы лент:
LSI-11-AbsLoader.bin - абсолютный загрузчик, не использующий аппаратный регистр переключателей.
DEC-11-AJPB-PB.bin - PDP-11 Paper Tape BASIC
MAINDEC-11-DVKAA-A-PB.bin - основной тест команд процессора LSI-11.
...
Запуск любой программы с перфоленты начинается с запуска абсолютного загрузчика командой пульта L. После завершения команды L - надо вставить в привод PC ленту с программой и нажать P. Обе программы из каталога Paper Tapes\ работают только при выключенном таймере. Бэйсик стартует сам, а тест процессора после загрузки надо вручную запустить с адреса 200 :
http://s7.hostingkartinok.com/uploads/images/2015/05/2910fb639eb65d2cc98415570e2299ea.jpg
@L 157500
@P
PDP-11 BASIC, VERSION 007A
*O
READY
@L 157500
@P 157712
@200G
END PASS
END PASS
Patron, а планируется ли когда-нибудь добавление в архив с эмулятором help или инструкций каких-нибудь ?
так будет проще разобраться что к чему в эмуляторе и не нужно будет перечитывать всю эту тему на форуме, да и новичкам будет легче.
планируется ли когда-нибудь добавление в архив с эмулятором help или инструкций каких-нибудь ?Не планируется. В первом сообщении данной темы есть постоянно дополняемое описание использования эмулятора, а также ссылки на описания всех релизов.
плохо и уже во втором посте на первой странице все картинки не работают (ссылки сдохли) да и сайт этот не вечен, неизвестно что будет скажем лет через пять.
уже во втором посте на первой странице все картинки не работаютУ меня работают.
ZEman, поскольку картинки спрятаны "под катом" иногда что бы восстановить отображение их в браузере надо перезагрузить страничку (F5).
Patron, ИМХО: а можно поправить ссылку на архив тут
http://zx-pk.ru/showpost.php?p=475834&postcount=4
причём можно не на главную мордочку ( http://archive.pdp-11.org.ru/ )
делать ссылку, а сразу "внутрь", на
раздел УК-НЦ \ ДВК ( http://archive.pdp-11.org.ru/ukdwk_archive/ ). Хотя на главную, наверное, всё таки правильней.
hobot, а можно попросить, если не трудно можешь выложить где-нибудь содержимое папки dwkwebcomplekt одним архивом ?
очень неудобно и долго качать по одному файлу.
ZEman, что то такое планировал, но потом отказался по некоторым причинам,
<del>
https://archive.org/download/archive.pdp11.org.ru-20130504
что-то не могу скачать эмулятор
ra3qdp, Залил ранее скаченный архив.
Скачать здесь. (http://rghost.ru/download/8SL89BTV2/e0ac86c1385ae9e3e0ab157db1e34c5f335e2384/DVK_Emulator_02.05.15_20-12.rar)
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_10.06.15_18-32
Изменения:
1. Исправлена эмуляция ВЕ-таймера 1801ВМ1, нарушенная в предыдущем релизе.
2. Теперь драйвер HD.SYS позволяет осуществлять холодную загрузку при включённом таймере.
3. В каталог AT11SJ.5M\ добавлен файл HD.MAC с исходником драйвера HD.SYS и командный файл HD.COM для его компиляции.
Patron,А почему Вы не включили альтернативною прошивку 055alt.? По моему она достойна для включения в релиз.
альтернативною прошивку 055alt.Добавил файл прошивки в архив и перезалил.
Patron, Здравствуйте.
Попробовал сделать электронный диск через драйвер VD.SYS.
RAM = CPU_module:ROM
bus & CPU | RAM
[RAM.ini]
ROM_BaseAddress = 0176640
ROM_Bytes = 0200
ROM_LatencyNS = 300
ROM_Disable = 0
Драйвер это дело подхватил и пишет Installed. При попытке сделать INIT VD0: вылетает в пульт.
142420
@
Что может быть не так?
...
Ещё давно хотел спросить. При расширении основного окна, окно консоли VT52 не до конца расширяется а оставляет между основным окном и консолью рамку. Можно как-нибудь привязать расширение окна и расширение консоли без разрыва межу ними.
Спасибо.
Попробовал сделать электронный диск через драйвер VD.SYSВ какой памяти этот драйвер создаёт электронный диск ( пока не эмулируется никакая память, кроме основной памяти ДВК ) ?
При расширении основного окна, окно консоли VT52 не до конца расширяется а оставляет между основным окном и консолью рамку. Можно как-нибудь привязать расширение окна и расширение консоли без разрыва межу ними.Размер внутреннего окна терминала определяется метрикой выбранного шрифта, а размер внешнего окна произвольный - поэтому совместить их размеры в общем случае принципиально невозможно. По идее можно сделать для внтреннего окна настройку наличия/отсутствия рамки. Тогда если убрать рамку у внутреннего окна и задать одинковый цвет фона для обоих окон - визульно будет как бы одно окно.
В какой памяти этот драйвер создаёт электронный диск ( пока не эмулируется никакая память, кроме основной памяти ДВК ) ?Эта память находится на КГД 16кб или при замене на РУ5 64кб (возможно кто-то менял и на РУ7). Понятно что о КГД говорить ещё рано, но как Эл. диск заэмулировать я думаю можно.
Размер внутреннего окна терминала определяется метрикой выбранного шрифта, а размер внешнего окна произвольный - поэтому совместить их размеры в общем случае принципиально невозможно. Там получается окно консоли расширяется скачкообразно (как-бы догоняя основное окно). Между скачками и появляется рамка.
По идее можно сделать для внтреннего окна настройку наличия/отсутствия рамки. Тогда если убрать рамку у внутреннего окна и задать одинковый цвет фона для обоих окон - визульно будет как бы одно окно. Надо попробовать, может и красиво будет. :)
Надо попробовать, может и красиво будет.Запустил эмулятор и сразу вспомнил, что у внутреннего окна терминала есть не только бордюр, но ещё и свои кнопки, и полоса прокрутки - поэтому отключать у него рамку смысла нет.
Запустил эмулятор и сразу вспомнил, что у внутреннего окна терминала есть не только бордюр, но ещё и свои кнопки, и полоса прокрутки - поэтому отключать у него рамку смысла нет. Тогда привязать кнопки к основному окну вторым рядом на подобии консоли MY, а текст пускать прямо в консоли без окна.
Тогда привязать кнопки к основному окну вторым рядом на подобии консоли MY, а текст пускать прямо в консоли без окна.В принципе такое возможно, но явно не в ближайшее время.
Привод DX в принципе не имеет команды форматирования, а для привода DY команда Set Density пока не эмулируется ( и вряд ли когда-то будет ).Обнаружился интересный файлик FORMDX. :)
Я тут в конфиге увидел всякие файлы на тему DY... А грузиться он с них умеет? У меня что-то не вышло...
Я тут в конфиге увидел всякие файлы на тему DY... А грузиться он с них умеет?
Ага.
http://s020.radikal.ru/i714/1510/9a/46dfed27442e.jpg (http://radikal.ru/big/497ed763b71b4857b405cbaa1e8a0eff)
У меня просто засвечивается DY0 и тишина...
Использовал прилагаемый конфиг ДВК-2_DY.cfg...
---------- Post added at 22:54 ---------- Previous post was at 22:51 ----------
О, сейчас сработало...
form, Надо набрать В, потом DY и ВК.
Надо набрать В, потом DY и ВК.
Ну поди знаком с этим ;)
---------- Post added at 23:18 ---------- Previous post was at 22:56 ----------
Попытался загрузить RSX-11M с DY... Не вышло - останавливается даже не попадая в PANIC, успев напечатать идентификационную строку. В других эмуляторах в конфигурации 11/03 все работает. Лень пока ковыряться, могу выложить образ если у кого время есть...
На других эмуляторах:
DEVICE TT001: NOT IN CONFIGURATION
RSX-11M V4.8 BL70 28.K
>RED DY:=SY:
>RED DY:=LB:
>MOU DY:RSX11MBL70
>@DY:[1,2]STARTUP
>* Please enter time and date (DD-MMM-YYYY HH:MM) [S]: 23:13:26 22-OCT-2015
>TIME 23:13:26 22-OCT-2015
>@ <EOF>
>TAS
. LDR. LDR 248. 000000 LB0:-00000000 FIXED
TKTN 05.00 SYSPAR 248. 012000 LB0:-00001507
MCR... 07.00 SYSPAR 160. 012000 LB0:-00001123
...MOU 27.02 GEN 160. 040000 LB0:-00001276
F11ACP 06.02 SYSPAR 149. 012000 LB0:-00000434 CHECKPOINTED
...INS 9.02 GEN 100. 040000 LB0:-00001053
...SAV 05.01 GEN 100. 040000 LB0:-00001414
...AT. 9.01 PAR14K 64. 070000 LB0:-00000653
...PIP 18.10 GEN 50. 040000 LB0:-00001517
>PIP /LI
Directory DY0:[1,50]
22-OCT-15 23:13
RSX11M.SYS;1 114. C 22-OCT-15 22:01
RSX11M.STB;1 13. 22-OCT-15 22:01
FCPSML.TSK;1 97. C 22-OCT-15 22:01
ICP.TSK;1 152. C 22-OCT-15 22:01
INS.TSK;1 62. C 22-OCT-15 22:01
MCR.TSK;1 117. C 22-OCT-15 22:01
MOU.TSK;1 46. C 22-OCT-15 22:01
SAV.TSK;1 81. C 22-OCT-15 22:01
TKN.TSK;1 18. C 22-OCT-15 22:01
PIP.TSK;1 75. C 22-OCT-15 22:01
Total of 775./775. blocks in 10. files
>
А что дебаг пишет?
Ничего интересного - несколько тестов несуществующих регистров, отключение несуществующего MMU - это штатное поведение. Потом HALT trap. И независимо от того работает эмулятор или нет в принципе - непрерывный lost interrupt vector 100...
Сейчас чаю налью, может поковыряю еще. Могу предположить, что все падает когда дело доходит до прерываний от DY - они к примеру быстрее DECовских ожиданий (происходят скорее чем определенное количество команд процессора успевает выполниться).
Разве изначальный дистрибутив уже с генерированный?
Также как и в RT-11, начальный дистрибутив грузится в базовую систему из которой и запускается процесс генерации.
---------- Post added at 00:07 ---------- Previous post was at 00:06 ----------
Впрочем это несколько выходит за рамки темы. Предлагаю почистить и перенести в тему по RSX :)
Кстати M в пульте говорит interrupt error...
---------- Post added at 00:10 ---------- Previous post was at 00:07 ----------
Вобщем если бы была возможность такая - как фичу добавить откладывание прерываний от контроллера пока процессор не выполнил определенное количество инструкций - это бы решило проблему. Ну а пока попробую переписать свой драйвер для MY под 11M - ему пофигу даже если I/O заканчивается одновременно с инструкцией которая его запустила :)
Ничего интересного - несколько тестов несуществующих регистров, отключение несуществующего MMU - это штатное поведение. Потом HALT trap.Можно получить полный лог выполненных команд и обработанных прерываний, для чего добавить в раздел [links] используемого файла конфигурации строку: CPU [DisAsm] > Debug и изменить указанные ниже параметры в разделах [CPU.ini] и [Debug.ini] :
[links]
CPU [DisAsm] > Debug
[CPU.ini]
InitialStateOf[DisAsm] = 1
[Debug.ini]
InitialStateOf[Log] = 1
Дизасм будет выводиться в окно Debug, а параметр InitialStateOf[Log] указывает - писать дизасм в файл или нет.
---------- Post added at 13:38 ---------- Previous post was at 13:31 ----------
Вобщем если бы была возможность такая - как фичу добавить откладывание прерываний от контроллера пока процессор не выполнил определенное количество инструкций - это бы решило проблему.Начать лучше с выкладывания загрузочного образа. Если ошибки в эмуляции DY мешают образу загрузиться - ошибки будут устранены.
Начать лучше с выкладывания загрузочного образа. Если ошибки в эмуляции DY мешают образу загрузиться - ошибки будут устранены.
Образ RSX-11M V4.8 (http://pdp-11.org.ru/~form/files/pdp-11/DY_RSXBL70.dsk)
---------- Post added at 16:44 ---------- Previous post was at 16:40 ----------
Выложил лог отладчика (http://pdp-11.org.ru/~form/files/pdp-11/Debug.log).
---------- Post added at 16:45 ---------- Previous post was at 16:44 ----------
Напоминает случай с установкой и сбросом бита прерывания на терминале - когда проц падает не получив вектора...
Напоминает случай с установкой и сбросом бита прерывания на терминале - когда проц падает не получив вектора...Попахивает ошибкой в эмуляции контроллера DY, потому что судя по логу - эмулируемый контроллер выставляет запрос IRQ по первой из следующих двух команд и снимает по второй:
027736 [000000] MOV 20.(R5), (R2) ; 042374:000507 -> 177170:004440
027742 [000000] BITB #240, (R2)
Обновилась текущая сборка "эмулятора ДВК": DVK_Emulator_24.10.15_21-39
Изменения:
1. Исправлена ошибка в эмуляции контроллера DY, не позволявшая успешно загрузить образ RSX-11M V4.8 (http://pdp-11.org.ru/~form/files/pdp-11/DY_RSXBL70.dsk).
Теперь грузится. Если поставить скорость меньше Max, 100% виснет после первой команды RED (при этом команды от MCR можно вводить - они выполняются), однако если загрузиться на Max, а потом переключиться в другую скорость - все работает, из чего можно сделать вывод, что подвисает программа SAV. Пару раз подвисло при загрузке и на Max. На досуге поковыряю.
В образе RSX-11M V4.8 с поддержкой 56Kb памяти, двух терминалов (второй 176560/360), принтера и собственно DY. Правда на момент сохранения системы второй терминал отсутствовал и помечен как offline, не знаю подключится ли он при этом в 11M при загрузке. Возможно надо пересохранить в полной конфигурации - тогда при загрузке лишнее отключит если надо.
А не, все проще - зависает только если выключен таймер (остался от экспериментов прошлых выключенным), а это нештатная ситуация для RSX :)
Занятно. Я думал в принципе не будет работать без таймера...
Чтоб не искать выше... Как там второй терминал сконфигурить?
Хочу кое-что еще подкрутить и выложить два окончательных образа RSX...
form, В конфиге прописать.
[objects]
TerminalPort2 = Port_module:DL11-W
[links]
bus & CPU | TerminalPort2
[TerminalPort2.ini]
BaseIO_Address = 0176560
BaseVectorsAddress = 0360
DL11W_TerminalPort_ComponentDisabled = 0
DL11W_LineClock_ComponentDisabled = 1
DL11W_LineClock_Hz = 50
DL11W_TerminalPort_BitsPerByte = 11
DL11W_TerminalPort_BaudRate = 9600
DL11W_TerminalPort_CPS_Limit = 0
Проверил тот образ что есть - SAV снимает статус offline с терминала которого не было в момент сохранения.
Ну как-бы скриншот посмотреть тоже интересно.
...
Да,.. а на MY образ будет?
Да,.. а на MY образ будет?
Будем и на MY и на HD, только драйверы сделаю...
form, Лучше DW, чтоб образ загонять на реальный винчестер.
Лучше DW
Слишком муторно им управлять с моей точки зрения - напоминает подачу резца пассатижами на токарном станке :D
Я сделаю драйвер для HD с коментариями, а там кому не лень - может взять как шаблон...
Выложил слегка причесанный образ и конфиг файл здесь (http://pdp-11.org.ru/~form/files/pdp-11/dvk/). Можно добавить в комплект.
form, А если тетрис запустить на 2х терминалах, потянет?
form, А если тетрис запустить на 2х терминалах, потянет?
Потянет, но потребует дополнительных действий: придется создать два раздела в памяти, достаточных для помещения туда программы, собрать две разные программы для каждого из разделов и тогда запускать. В сущности примерно также все выглядит и в RT-11FB (ну за исключением того, что там нет разметки на разделы) - придется собрать .REL и .SAV программы и запустить на разных терминалах...
Слишком муторно им управлять с моей точки зрения - напоминает подачу резца пассатижами на токарном станке :D
На всякий случай выкладываю текст DW+оптимизатор, вдруг желание появится. :)
Осталось совсем чуть-чуть до счастья :)
>MOU HD:/OVR/VI
Volume Information
Class: Files-11
Device: HD00
Volume label:RSX11MBL70
Owner: [1,1]
Protection: [RWCD,RWCD,RWCD,RWCD]
Default: [RWED,RWED,RWED,R]
Processor: F11ACP
>PIP HD:/LI
Directory HD0:[1,50]
27-OCT-15 12:23
RSX11M.SYS;1 114. C 27-OCT-15 12:24
RSX11M.STB;23 13. 27-OCT-15 12:24
BOO.TSK;16 33. C 27-OCT-15 12:24
DMO.TSK;15 15. C 27-OCT-15 12:24
DMP.TSK;1 64. C 27-OCT-15 12:24
FCPSML.TSK;15 97. C 27-OCT-15 12:24
ICP.TSK;15 152. C 27-OCT-15 12:24
INI.TSK;4 58. C 27-OCT-15 12:24
INS.TSK;14 62. C 27-OCT-15 12:24
MCR.TSK;14 117. C 27-OCT-15 12:24
MOU.TSK;14 46. C 27-OCT-15 12:24
SAV.TSK;16 81. C 27-OCT-15 12:24
TKN.TSK;14 18. C 27-OCT-15 12:24
UFD.TSK;14 8. C 27-OCT-15 12:24
PIP.TSK;1 75. C 27-OCT-15 12:24
VMR.TSK;2 165. C 27-OCT-15 12:24
Total of 1118./1118. blocks in 16. files
>
Доделать BOO/SAV драйвер еще и будет полноценная система (насколько RSX без MMU можно назвать полноценным) :)
---------- Post added at 14:35 ---------- Previous post was at 12:43 ----------
Победа!!! Вечером подготовлю полный образ с максимумом возможностей...
>BOO HD:[1,50]
RSX11M V4.8 BL70
>TIM 14:32 27-OCT-2015
>SAV /WB
RSX-11M V4.8 BL70 28.K
>RED HD:=SY:
>RED HD:=LB:
>MOU HD:RSX11MBL70
>@HD:[1,2]STARTUP
>* Please enter time and date (DD-MMM-YYYY HH:MM) [S]: 14:32 27-OCT-2015
>@ <EOF>
>DEV
LP0:
DY0: Type=RX02
DY1: Type=RX02
TT0:
TT1:
NL0:
TI0:
CO0: TT0:
CL0: TT0:
LB0: HD0:
SY0: HD0:
HD0: Mounted
HD1: Offline
HD2: Offline
HD3: Offline
HD4: Offline
HD5: Offline
HD6: Offline
HD7: Offline
>PAR
LDR 045464 045350 000000 MAIN TASK
PAR14K 055710 056000 070000 MAIN TASK
GEN 055654 056000 040000 SUB TASK
SYSPAR 055744 146000 012000 MAIN TASK
>TAS
. LDR. LDR 248. 000000 LB0:-00000000 FIXED
TKTN 05.00 SYSPAR 248. 012000 LB0:-00001615
...DMO 04.00 GEN 160. 040000 LB0:-00000247
MCR... 07.00 SYSPAR 160. 012000 LB0:-00001161
...MOU 27.02 GEN 160. 040000 LB0:-00001334
F11ACP 06.02 SYSPAR 149. 012000 LB0:-00000400 CHECKPOINTED
...INS 9.02 GEN 100. 040000 LB0:-00001111
...SAV 05.01 GEN 100. 040000 LB0:-00001452
...UFD 05.00 GEN 100. 040000 LB0:-00001533
...AT. 9.01 PAR14K 64. 070000 LB0:-00000617
...INI 24.03 GEN 60. 040000 LB0:-00000757
...BOO 06.02 GEN 50. 040000 LB0:-00000206
...DMP 08.11 GEN 50. 040000 LB0:-00000266
>
Первый рабочий сохраненный образ (http://pdp-11.org.ru/~form/files/pdp-11/dvk/hdrsx.dsk) HD.
Загрузить напрямую с HD не получилось, помню - там вроде загрузчик был не совсем аппаратный (или это я с HX путаю?) - нужна помощь чтобы мне не копаться... Вручную загрузилось. Также без проблем загрузилось из под RT-11 через BOO/FO. Плохо, что HD не предусматривает такого функционала как узнавание последнего устройства с которым контроллер работал - даже MY умеет :)
А драйвер загрузки/сохранения RSX активно этим пользуется. Пришлось некий магиц изобрести...
Загрузить напрямую с HD не получилосьЗагрузку с HD при старте эмулятора осуществляет объект Booter.
Сейчас Booter поддерживает WarmBoot только для загрузочных образов RT-11. Для загрузки всех остальных операционных систем надо обнулить параметр WarmBootSystem_# :
BootDeviceAlias = HD
BootDeviceUnit = 0
WarmBootSupportedSystem_#1 = RT11
WarmBootSystem_# = 0
WarmBoot_SetDateOnly = 0
RT11_LineClock_Hz = 50
InitialStateOf[Boot] = 1
SaveChangesFor[Boot] = 0
обнулить параметр WarmBootSystem_#
Работает! Будем готовить полный образ...
Выложил окончательный вариант образа (http://pdp-11.org.ru/~form/files/pdp-11/dvk/hdrsx.dsk). Собрал достаточный набор програм для unmapped системы без поддержки multiuser protection (хе-хе, и такое можно сделать ;)). Поправил мелкие косяки которые появились из-за того, что никто не проверял давно работу на очень старых машинах итд... Второй терминал для совместимости с правилами назначения сделал 176500/300. Больше пока не буду ковырять эту тему...
RSX-11M V4.8 BL70 28.K
>RED HD:=SY:
>RED HD:=LB:
>MOU HD:RSX11MBL70
>@HD:[1,2]STARTUP
>* Please enter time and date (DD-MMM-YYYY HH:MM) [S]: 23:44 28-OCT-2015
>@ <EOF>
>PAR
LDR 045164 045050 000000 MAIN TASK
PAR14K 055710 056000 070000 MAIN TASK
GEN 055654 056000 040000 SUB TASK
SYSPAR 055744 146000 012000 MAIN TASK
>DEV
LP0:
DY0: Type=RX02
DY1: Type=RX02
TT0:
TT1:
NL0:
TI0:
CO0: TT0:
CL0: TT0:
LB0: HD0:
SY0: HD0:
HD0: Mounted
HD1:
HD2: Offline
HD3: Offline
HD4: Offline
HD5: Offline
HD6: Offline
HD7: Offline
>TAS
. LDR. LDR 248. 000000 LB0:-00000000 FIXED
TKTN 05.00 SYSPAR 248. 012000 LB0:-00011673
...DMO 04.00 GEN 160. 040000 LB0:-00010505
MCR... 07.00 SYSPAR 160. 012000 LB0:-00012521
...MOU 27.02 GEN 160. 040000 LB0:-00011247
...CA. 14.02 GEN 150. 040000 LB0:-00006321
F11ACP 06.02 SYSPAR 149. 012000 LB0:-00010536 CHECKPOINTED
...INS 9.02 GEN 100. 040000 LB0:-00011623
...SAV 05.01 GEN 100. 040000 LB0:-00010423
...UFD 05.00 GEN 100. 040000 LB0:-00011325
...EDI M12.00 GEN 65. 040000 LB0:-00013631
...AT. 9.01 PAR14K 64. 070000 LB0:-00011107
...INI 24.03 GEN 60. 040000 LB0:-00011471
...HOM 24.03 GEN 60. 040000 LB0:-00011471
...BOO 06.02 GEN 50. 040000 LB0:-00011703
...MAC V05.05 PAR14K 50. 070000 LB0:-00015373
...TKB X43.01 PAR14K 50. 070000 LB0:-00016133
...LBR 08.01 GEN 50. 040000 LB0:-00015263
...PIP 18.10 GEN 50. 040000 LB0:-00015526
...VFY 08.10 GEN 50. 040000 LB0:-00016426
...FLX 17.06 GEN 50. 040000 LB0:-00014435
...SLP 12.01 GEN 50. 040000 LB0:-00016053
...ZAP 03.01 GEN 50. 040000 LB0:-00016517
...PAT 02.00 GEN 50. 040000 LB0:-00013726
...CMP 03.01 GEN 50. 040000 LB0:-00013402
...VMR 06.01 PAR14K 50. 070000 LB0:-00016602
...HEL 04.02 GEN 50. 040000 LB0:-00010725
...CAL V01.01 GEN 50. 040000 LB0:-00021177
...DVL V02.00 GEN 50. 040000 LB0:-00021172
>DIR
>
Directory HD0:[1,50]
28-OCT-15 23:44
RSX11M.TSK;1 114. C 28-OCT-15 21:46
RSX11M.STB;1 13. 28-OCT-15 21:46
RSX11M.SYS;1 114. C 28-OCT-15 21:46
SAV.TSK;1 82. C 28-OCT-15 21:46
DMO.TSK;1 15. C 28-OCT-15 21:46
FCPSML.TSK;1 97. C 28-OCT-15 21:46
HEL.TSK;1 90. C 28-OCT-15 21:46
ICP.TSK;1 152. C 28-OCT-15 21:46
INI.TSK;1 58. C 28-OCT-15 21:46
INS.TSK;1 62. C 28-OCT-15 21:46
MCR.TSK;1 117. C 28-OCT-15 21:46
MOU.TSK;1 46. C 28-OCT-15 21:46
SYSVMR.CMD;1 2. 28-OCT-15 22:36
TKN.TSK;1 18. C 28-OCT-15 21:46
UFD.TSK;1 8. C 28-OCT-15 21:46
BOO.TSK;1 34. C 28-OCT-15 21:46
BAD.TSK;1 53. C 28-OCT-15 21:46
TDX.TSK;1 20. C 28-OCT-15 22:36
DVL.TSK;1 5. C 28-OCT-15 22:54
CMP.TSK;1 51. C 28-OCT-15 21:46
CAL.TSK;1 8. C 28-OCT-15 22:54
DMP.TSK;1 64. C 28-OCT-15 21:46
EDI.TSK;1 61. C 28-OCT-15 21:46
FLX.TSK;1 132. C 28-OCT-15 21:46
IOX.TSK;1 112. C 28-OCT-15 21:46
LBR.TSK;1 72. C 28-OCT-15 21:46
MAC.TSK;1 91. C 28-OCT-15 21:46
PAT.TSK;1 46. C 28-OCT-15 21:46
PIP.TSK;1 75. C 28-OCT-15 21:46
SLP.TSK;1 48. C 28-OCT-15 21:46
TKB.TSK;1 187. C 28-OCT-15 21:46
VFY.TSK;1 57. C 28-OCT-15 21:46
ZAP.TSK;1 51. C 28-OCT-15 21:46
VMR.TSK;1 165. C 28-OCT-15 21:46
Total of 2320./2320. blocks in 34. files
>
HDTAB.MAC - база данных для загружаемого драйверы
HDDRV.MAC - драйвер ввода/вывода
USRTB.MAC - база данных для встроенного драйвера
SAVHD.MAC - драйвер загрузки/сохранения
В сообщении выше обновились/добавились файлы. Появилась поддержка 22-битного контроллера HD который я использую в E11 - надоело перегружаться из одной системв в другую, чтобы загрузить третью :)
Попутно предложение, касающееся будущей эмуляции ВМ3 :)
Слегка расширить устройство HD, сохранив совместимость:
добавить поддержку байтовой записи (если ее нет)
при записи в CSR позволять писать только младшие 3 бита (команда) и младшие 6 битов старшего байта (расширение адреса буфера), сбрасывать бит 15 (ошибка), устанавливая его после выполнения команды (если была запись в слово/младший байт) в случае ошибки
после выполнения команды чтения/записи в регистр данных возвращать статус к примеру код завершения в младшем байте, unit # в старшем
для идентификации нового варианта контроллера добавить команду с кодом 0 которая бы возвращала в регистр данных что-нибудь
На данный момент мучаю такой вариант HD в E11. Отлично работает как с выложенным выше RSX, так и с RT-11 и тамошним драйвером от данного эмулятора, ну и теперь и из mapped RSX я могу напрямую обращаться к нему...
Кстати в RSX образе который выкладывал выше в командах SAV и BOO драйвер ихний был некорректно сделан и лишил возможности грузиться/сохраняться на некоторых других устройствах (которых впрочем никогда на ДВК не было). Будет время - пересоберу...
UPD: себе сделал вариант где в CSR всегда установлен 7 бит, а команда 0 выполняет роль NOP, соответственно если обнулить CSR и 7 бит останется установленным - это расширенный вариант контроллера, если же 7 бит обнуляется - контроллер классический и драйвер в XM/ZM не должен устанавливаться, а в mapped RSX отмечать все устройства как offline
UPD2: посе выполнения любой команды (кроме чтения размера устройства) у меня регистр данных возвращает в старшем байте последний выбранный unit (сам номер может быть соответственно от 0 до 0377), в младшем байте код ошибки: 1 - нет ошибки, 0277 - устройство offline, 0354 - выход за пределы устройства, 0364 - попытка записи на защищенное устройство, 0374 - неустранимая ошибка (например bus error), 0376 - неверная команда. Эти коды совместимы с RSX-11 I/O ошибками
при записи в CSR позволять писать только младшие 3 бита (команда)Так как контроллер HD является частью движка эмуляции - он имеет расширенные команды управления эмуляцией. В текущей версии это:
#define HD_ExitEmulator 9
#define HD_SetTempCPUSpeed 10
#define HD_RestoreMainCPUSpeed 11
#define HD_SetSlowCPUSpeed 12
#define HD_Take_RT11_ExitCode 13
В будущем могут появиться ещё расширенные команды, но можно ввести ограничение, что код команды содержится в битах [5..0].
В будущем могут появиться ещё расширенные команды, но можно ввести ограничение, что код команды содержится в битах
Ну да, никто не мешает больше битов использовать под команды. Поставлю у себя в плугине биты 0-5 для команд и как нопы дополнительные.
Обновил образ (http://pdp-11.org.ru/~form/files/pdp-11/dvk/hdrsx.dsk). Исправлены косяки в SAV/BOO, поправлена программа RMD так, чтобы могла работать на процессорах без адресуемого PSW (причем ошибка никак с самим PSW связана не была). Терминал принудительно выставлен VT52. Польза от RMD в unmapped системе правда сомнительна, но пусть будет :)
Драйвер SAV/BOO проверяет тип контроллера по описанному выше методу и в новом варианте гарантирует правильную загрузку. В классическом варианте HD теоретически возможна ситуация когда при загрузке неправильно будет определен номер устройства (случалось после загрузки командой BOO из под другого RSX).
Работающий драйвер, поддерживающий как 16-битный так и 22-битный вариант контроллера HD. Драйвер позволяет загрузить mapped RT-11 и работать в нем, но программы запущенные в VBGEXE (или сам VBGEXE если HD - системный диск) получат ошибку чтения/записи при обращении к HD (на 16-битном контроллере).
HD V1.0 CSR=177720, 22-bit controller
RT-11XM V05.07
.SET TT QUIET
.V DIR HDX
01-Nov-2015
HDX .SYS 3 01-Nov-2015
1 Files, 3 Blocks
9866 Free blocks
.
HD V1.0 CSR=177720, 16-bit controller
RT-11XM V05.07
.SET TT QUIET
.R DIR HDX
01-Nov-2015
HDX .SYS 3 01-Nov-2015
1 Files, 3 Blocks
9866 Free blocks
.V DIR HDX
?VBGEXE-F-Internal error
.
Попутно несколько фич для драйверов:
не нужно в загрузчике записывать ^RXX в B$DEVN - для этого есть B$DNAM (меньше менять потом если что) :)
TPS, TPB, CR и LF определены в любом загружаемом драйвере
UPD: драйвер обновлен - теперь позволяет сменить CSR, а также в архиве лежат пресобранные драйвера HD.SYS (без поддержки device timeout), HDTM.SYS (с поддержкой device timeout), HDX.SYS (для RT-11XB/XM/ZB/ZM).
В процессе отладки наткнулся...
103552 [000001] MOV 2(SP), R2 ; 056556:000000 -> R2 :103364
103556 [000005] MOV (SP), -(SP) ; 056554:000001 -> 056552:115252
103560 [000001] CALL @(SP)+ ; R7 :103562 -> 056550
000001 [000001] BLT 37777777433
BLT 37777777433
вот так системы охлаждения могут и не сработать )
да на реакторе ) только бы подальше где нибудь в африке и не в нашу смену )
000001 [000001] BLT 37777777433Код там такой:
sprintf(str,"%06o", PC + nOffset );
DisAsmPrint(str);
При любом выходе суммы ( PC + nOffset ) за границы слова - в дизассемблере будет ерунда.
Исправлю это в следующем релизе для всех процессоров.
Исправлю это в следующем релизе для всех процессоров.
А какие на данном этапе поддерживаются уже?
А какие на данном этапе поддерживаются уже?Поддерживаются 1801ВМ1 и 1801ВМ2. Ещё один эмулятор 1801ВМ1 есть в адаптере МПИ - там тоже свой дизассемблер.
В итоге рабочие копии дизассемблера присутствуют в 3-х объектах.
Powered by vBulletin® Version 4.2.5 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot