Давно уже в сети и тебе очень давно я просил(рекомендовал) к изучению раздел HD1 из этого архива
где ИМХО:очень много по теме данной интересного, но тогда я ещё
не знал про твой эмулятор и про его способности(видео-гибрида), теперь это ещё интересней стало.
Кстати, этот эмулятор VT200 на моем эмуле не запускается)
Вот это место поподробней расписать можно?
Сейчас у меня сделано так:
Со стороны ПП:
Приемники 0, 1, 2:
Запрос на прерывание снимается при:
1. Чтении регистра данных приемника
2. При сбросе РП в 0.
3. При совершении прерывания
4. (наверно неправильно, но пока есть) при сбросе бита БГ в регистре 177066
Запрос на прерывание устанавливается при:
1. Записи в регистр данных со стороны ЦП в источник при РП = 1.
2. При переходе РП 0->1, и уже установленном БГ = 1.
3. (наверное неправильно, но пока есть) при записи в регистр 177066 в бит БГ 0->1 при установленном РП.
Источники 0, 1:
Запрос на прерывание снимается при:
1. При совершении прерывания
Запрос на прерывание устанавливается при:
1. Чтении регистра данных приемника со стороны ЦП, при РП = 1.
2. (наверное неверно) Если при записи в 177076 (БГ .AND. РП) = 1. (БГ можно писать!)
Со стороны ЦП:
Источники 0, 1, 2:
Запрос на прерывание снимается при:
1. При совершении прерывания
Запрос на прерывание устанавливается при:
1. Чтении регистра данных приемника со стороны ПП, при РП = 1.
2. При записи в регистр состояния источника РП = 1, при установленнном БГ = 1.
Приемники 0, 1:
Запрос на прерывание снимается при:
1. При совершении прерывания
Запрос на прерывание устанавливается при:
1. Записи в регистр данных источника со стороны ПП при установленном РП = 1.
2. При записи в регистр состояния приемника РП = 1, при установленнном БГ = 1.
Последний раз редактировалось Titus; 14.02.2012 в 06:49.
Пока никто не отвечает, задам еще несколько вопросов.
1. Что делает 6-й разряд в регистре 177066? Написано 'разрешение прерывания по команде RESET на магистрали ЦП'. Что это означает? Какое прерывание, где, зачем?
2. 2-й разряд в регистре 177076. "Выключение регистров канала-0 из адресного пространства ЦП". Как это работает и зачем это нужно?
Да уж в этой теме ранее вопрос поднимался, я описывал принцип. В каком-то другом топике тоже. Неохота десять раз одно и тоже писать. Есть исходники UKNCBTL, там же все посмотреть можно (файл Board.cpp).
Плюс к тому же рабочая неделя началась, уже времени на общение меньше.
Программа в ЦП дает команду RESET, процессор по этой команде на шину выставляет INIT. Так вот этот INIT идет соответственно и на 1801ВП1-120. Регистры со стороны ЦП сбрасываются, а со стороны ПП возникает запрос на прерывание при установленном 6-м разряде 177066.
Это значит, что при обращении к адресам 177560-177567 происходит TRAP4, т.е. регистры исчезают из адресного пространства ЦП. Но в UKNCBTL это пока не сделано, есть тонкий вопрос: если для приемника разрешили прерывание, в ПП запретили эти регистры, а со стороны ПП в источник канала 0 записали значение. Возникнет ли прерывание?
---------- Post added at 18:54 ---------- Previous post was at 18:52 ----------
Еще вдобавок: биты готовности можно только читать, писать их нельзя.
Насколько я понимаю - чтение и запись регистра данных влияют на установку прерывания через сигнал готовности.
Поэтому, есть смысл полностью забыть про чтение/запись регистра данных и говорить только про состояние сигнала (бита) готовности.
В портах "в стиле ДВК" запрос прерывания устанавливается при установке логического произведения (операция AND) битов БГ и РП в 1 и сбрасывается при обнулении этого произведения (а также при передаче вектора и при сбросе шины сигналом INIT).
В портах "в стиле УКНЦ" (насклько я понял) бит готовности влияет на формирование запроса прерывания не напрямую, а через "промежуточный бит" ПБ.
Правила при этом таковы:
1. Если БГ устанавливается - ПБ устанавливается.
2. Если БГ сбрасывается - ПБ сбрасывается.
3. Запрос прерывания выдаётся по AND ПБ и РП.
4. При передаче вектора ПБ сбрасывается.
Вся хитрость (и единственное отличие) здесь в том, что после передачи вектора - бит ПБ сбрасывается.
Поэтому, даже если бит БГ остался равен 1 - новый запрос прерывания станет возможен только тогда, когда бит ПБ будет установлен в 1 (а для этого бит БГ должен "передёрнуться" 1-0-1).
Последний раз редактировалось Patron; 15.02.2012 в 22:34.
Кстати о прерываниях. В другой теме - не помню в которой, написал здесь - помнится недавно говорилось, что при разрешении прерывания в 177564, оно будет лупить пока не запретить. Ради интереса проверил: ни на одном из имеющихся в моем распоряжении DL-подобных устройств прерывание не повторяется - то есть происходит одно прерывание и все. Следующее не происходит если не было записи в 177566.
Последний раз редактировалось form; 16.02.2012 в 07:18.
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
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)