С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Хорошо если так.
Для устройств, имеющих разные векторы прерываний передачи и приёма, в реальном оборудовании (как правило) задан жёсткий порядок обсуживания этих прерываний при одновременном поступлении.
Является ли "правильной" эмуляция, при которой данный порядок не соблюдается и требует ли такая ситуация учёта и "поправки" - вопрос абстрактный.
Ну это все отдельная тема по организации самого эмулятора.
Для этой темы думаю нашлось бы много полезного материала.
Мне же пока нужно просто чтобы С2 в эмуляторе заработал - тогда я успокоюсь даже без починки С2 в своем УКНЦ и буду его плавно готовить к тому, чтобы сплавить нахрен
В исходники эмулятора не полезу принципиально![]()
Последний раз редактировалось form; 05.11.2011 в 14:28.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
В тему правильной эмуляции прерываний PDP-11 глубже всего проник Боб Супник: PDP-11 Interrupts: Variations On A Theme.
В описании E11 есть глава, посвященная эмуляции прерываний в условиях эмулируемого же железа. В двух словах кроме уже упомянутых rank, level, нужен еще параметр сколько команд cpu пропустить прежде чем приерывание сработает. Это особенно критично для DECовского софта в котором часто обработчики прерывания надеются не на приоритет процессора, а на то, что хватит времени обработать прерывание раньше чем возникнет следующее
Тамже кстати примеры есть из реальной жизни.
---------- Post added at 18:16 ---------- Previous post was at 17:53 ----------
Кстати о Супнике... Ни у кого случайно нет с ним связи?
У них там в эмуляторе RK06/07 криво запись делает. Пробовал написать на адрес на который "пишите" - это оказался список рассылки на который еще надо подписаться. Попробовал подписаться - молчание. На том и кончилась добрая инициатива по отправке им патча![]()
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Так приходится поступать (например, буферизовать принимаемые через порт символы и передавать их процессору только тогда, когда после передачи предыдущего символа процессор успел выполнить не менее 100 команд ), но это уже относится не к корректной, а к комфортной эмуляции.
В ядре монитора RT11SJ есть забавный баг, который приводит к тому, что если очередной символ поступает на вход порта терминала раньше, чем процессор успел выполнить 100 команд - символы заносятся в кольцевой буфер ввода в обратном порядке. Причём, это происходит (если не ошибаюсь) даже в том случае, когда при генерации монитора заказан High Speed Ring Buffer :)Это особенно критично для DECовского софта в котором часто обработчики прерывания надеются не на приоритет процессора, а на то, что хватит времени обработать прерывание раньше чем возникнет следующее
Во всех остальных мониторах, кроме SJ - такого бага нет.
PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
PMI: KDJ11-BF, MSV11-JE
VT220, CM7209
Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)