Чтобы картина была более полной, сделал вариант теста Вложение 13888, в котором перед тем как пойдет основная группа команд добавлен один nop. Результат с реала:
Чтобы картина была более полной, сделал вариант теста Вложение 13888, в котором перед тем как пойдет основная группа команд добавлен один nop. Результат с реала:
Последний раз редактировалось ivagor; 15.12.2009 в 15:23.
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Последняя проверка - заменил EI на EI + NOP (генерацию соответственно поправил) - стало как в эмуляторе - 1D38. Т.е. когда EI разбавлены NOPами процессор может после NOPа все же обработать прерывание.
Надеюсь, уважаемые разработчики эмуляторов учтут эту особенность КР580.
Последний раз редактировалось ivagor; 24.10.2009 в 17:45.
Вот убей не помню, зачем я в mov a,a сделал 4 такта как у NOP, но это оказалось неправильно
Доделываю тест (добавляю команды и немного повышаю универсальность), попробовал в эмуляторах с z80. Растактовка z80 для вектора вызывает уныние и в b2m (все совсем плохо) и в VV (некоторые команды). Зато в b2m для z80 реализована особенность обработки прерываний при выполнении ei.
Текущий вариант теста работоспособен до 6 МГц включительно, в связи с этим обнаружилась проблема с последними версиями b2m. Конфиг вектора с z80 на 6 МГц еще работает в версии 06.10.2009 и уже не работает в версии 12.10.2009. Это не связано с тестом, просто конфиг не запускается.
Последний раз редактировалось ivagor; 25.10.2009 в 10:47.
Здесь можно скачать актуальные версии Virtual Vector (VV)
Отсканировал фрагмент книжки Вложение 13893, стр. 61-62.
По z80 datasheet. Стр. 14 бумажного документа (стр. 10 pdfa) - табличка. У EI и DI звездочки, снизу примечание
*indicates interrupts are not sampled at the end of EI or DI
По ВМ1 вряд ли удастся найти источники, только проверять на реале, если он будет. Еще 1821ВМ85 меня интересует.
Последний раз редактировалось ivagor; 23.11.2009 в 07:39.
VV 5.94 на сайте!
Исправлена система прерываний.
---------- Post added at 09:55 ---------- Previous post was at 09:52 ----------
ivagor, респект за тесты!
Кстати, как подключил Вектор? Через тюнер? Делал ли доработку синхронизации?
b2m и Ramiros - спасибо за доработки.
Однако разница с реалом осталась. Если приглядитесь к картинке с результатами spdtest, для 8 тактных команд наблюдются колебания в одну команду:
ADD M, MOV M, MVI R - 1D38
INR R, INX, MOV R, SPHL - 1D39
Проверял несколько раз - результат аналогичный, т.е. для определения реал/эмулятор это можно использовать. Я не утверждаю, что именно эти команды всегда выполняются "чуть быстрее" или прерывание для них таинственным образом "растягивается", скорее всего это результат стечения каких-то обстоятельств. Если добавить один nop (см. spdtest2) то результаты становится гладкие как в эмуляторе (скриншот с результатом spdtest2). Есть какие-нибудь идеи почему так происходит?
Через тюнер. Синхру не дорабатывал, зажал на векторе яркость, кадры медленно плывут. Записываю короткий фрагмент, выбираю оттуда "правильный" кадр. Такая вот технология. Купил 2 155ЛЕ1, теперь надо искать, кто мне ее впаяет.
Закономерность только одна: команды в первой строке выполняются на "нормальном" процессоре за 7 тактов, во второй - за 5. Видимо, это как-то влияет на возникновение прерывания. Точнее, это влияет на то, какая команда будет "ждать" пару тактов - последняя до прерывания, или первая после.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)