Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Эмуляторы отечественных компьютеров (http://zx-pk.ru/forumdisplay.php?f=61)
-   -   Эмулятор УКНЦ - EmuStudio (http://zx-pk.ru/showthread.php?t=18027)

Titus 14th February 2012 02:17

Quote:

Originally Posted by hobot (Post 466763)
Я ничего не утверждаю, я похожий образ нашёл в другом источнике, с другой документацией и другими описаниями - вот и читаю сам пытаюсь понять как это
всё должно было работать по замыслу "гениев-создателей"

Выкладывай)

hobot 14th February 2012 02:23

Quote:

Originally Posted by Titus (Post 466766)
Выкладывай)

Давно уже в сети и тебе очень давно я просил(рекомендовал) к изучению раздел HD1 из этого архива
где ИМХО:очень много по теме данной интересного, но тогда я ещё
не знал про твой эмулятор и про его способности(видео-гибрида), теперь это ещё интересней стало.

Titus 14th February 2012 02:25

Кстати, этот эмулятор VT200 на моем эмуле не запускается)

hobot 14th February 2012 02:31

Quote:

Originally Posted by Titus (Post 466769)
Кстати, этот эмулятор VT200 на моем эмуле не запускается)

почему и попал под пристальное внимание архивариуса )))))))))))))))))))))))

---------- Post added at 01:31 ---------- Previous post was at 01:30 ----------

Но hd1 из архива (который в хламнике) интереснее в разы !!!!!! Там похоже сам дистрибутив всей этой поделки )))

Titus 14th February 2012 07:15

Quote:

Originally Posted by Alex_K (Post 462603)
Если же это канал 0 со стороны ПП или каналы 1 или 2, то запроса увы не затребуется, несмотря на переход с (БГ .AND. РП = 0) на (БГ .AND. РП = 1). В этом случае правило перехода с (БГ .AND. РП = 0) на (БГ .AND. РП = 1) будет выполнено, если был прочитан/записан регистр данных (и соответственно сброшен бит ГТ).

Вот это место поподробней расписать можно?

Сейчас у меня сделано так:
Со стороны ПП:
Приемники 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 15th February 2012 18:04

Пока никто не отвечает, задам еще несколько вопросов.

1. Что делает 6-й разряд в регистре 177066? Написано 'разрешение прерывания по команде RESET на магистрали ЦП'. Что это означает? Какое прерывание, где, зачем?

2. 2-й разряд в регистре 177076. "Выключение регистров канала-0 из адресного пространства ЦП". Как это работает и зачем это нужно?

Alex_K 15th February 2012 19:54

Quote:

Originally Posted by Titus (Post 467395)
Пока никто не отвечает, задам еще несколько вопросов.

Да уж в этой теме ранее вопрос поднимался, я описывал принцип. В каком-то другом топике тоже. Неохота десять раз одно и тоже писать. Есть исходники UKNCBTL, там же все посмотреть можно (файл Board.cpp).
Плюс к тому же рабочая неделя началась, уже времени на общение меньше.
Quote:

Originally Posted by Titus (Post 467395)
1. Что делает 6-й разряд в регистре 177066? Написано 'разрешение прерывания по команде RESET на магистрали ЦП'. Что это означает? Какое прерывание, где, зачем?

Программа в ЦП дает команду RESET, процессор по этой команде на шину выставляет INIT. Так вот этот INIT идет соответственно и на 1801ВП1-120. Регистры со стороны ЦП сбрасываются, а со стороны ПП возникает запрос на прерывание при установленном 6-м разряде 177066.
Quote:

Originally Posted by Titus (Post 467395)
2. 2-й разряд в регистре 177076. "Выключение регистров канала-0 из адресного пространства ЦП". Как это работает и зачем это нужно?

Это значит, что при обращении к адресам 177560-177567 происходит TRAP4, т.е. регистры исчезают из адресного пространства ЦП. Но в UKNCBTL это пока не сделано, есть тонкий вопрос: если для приемника разрешили прерывание, в ПП запретили эти регистры, а со стороны ПП в источник канала 0 записали значение. Возникнет ли прерывание?

---------- Post added at 18:54 ---------- Previous post was at 18:52 ----------

Еще вдобавок: биты готовности можно только читать, писать их нельзя.

Patron 15th February 2012 20:22

Насколько я понимаю - чтение и запись регистра данных влияют на установку прерывания через сигнал готовности.

Поэтому, есть смысл полностью забыть про чтение/запись регистра данных и говорить только про состояние сигнала (бита) готовности.

В портах "в стиле ДВК" запрос прерывания устанавливается при установке логического произведения (операция AND) битов БГ и РП в 1 и сбрасывается при обнулении этого произведения (а также при передаче вектора и при сбросе шины сигналом INIT).

В портах "в стиле УКНЦ" (насклько я понял) бит готовности влияет на формирование запроса прерывания не напрямую, а через "промежуточный бит" ПБ.

Правила при этом таковы:

1. Если БГ устанавливается - ПБ устанавливается.
2. Если БГ сбрасывается - ПБ сбрасывается.
3. Запрос прерывания выдаётся по AND ПБ и РП.
4. При передаче вектора ПБ сбрасывается.

Вся хитрость (и единственное отличие) здесь в том, что после передачи вектора - бит ПБ сбрасывается.

Поэтому, даже если бит БГ остался равен 1 - новый запрос прерывания станет возможен только тогда, когда бит ПБ будет установлен в 1 (а для этого бит БГ должен "передёрнуться" 1-0-1).

form 16th February 2012 08:15

Quote:

Originally Posted by Patron (Post 467474)
Насколько я понимаю - чтение и запись регистра данных влияют на установку прерывания через сигнал готовности.

Кстати о прерываниях. В другой теме - не помню в которой, написал здесь - помнится недавно говорилось, что при разрешении прерывания в 177564, оно будет лупить пока не запретить. Ради интереса проверил: ни на одном из имеющихся в моем распоряжении DL-подобных устройств прерывание не повторяется - то есть происходит одно прерывание и все. Следующее не происходит если не было записи в 177566.

Patron 16th February 2012 11:12

Quote:

Originally Posted by form (Post 467690)
прерывание не повторяется - то есть происходит одно прерывание и все. Следующее не происходит если не было записи в 177566.

"Внеочередное" прерывание произойдёт, если выполнить последовательность команд:
Code:

BiC  #100, @#177564
BiS  #100, @#177564

Ни одна из этих команд не пишет в 177566.


All times are GMT +4. The time now is 02:44.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.