Vladimir Kladov
Мне бы эту гениальную мысль, да лет 10 назад... а что теперь прошлое ворошить...Короче: LDIR = LDI;PC=PC-2. И точка.
Честно-честно?Прочитал тред
Ну-ну, зачем же так злобно... Лучше на работе долго не задерживаться, да спать побольше, а еще на людей, которые раздражают и злят, не обращать особого внимания, тогда и настроение гораздо лучше будет, и быть может производительность повысится до версии 2.8 (а то и 3.0) .Осциллографом тыкать сразу - нет чтобы доки почитать...
А то будете как я 4-мя постами выше
DDp
Вы как всегда на высоте, примите мои благодарности (кстати, что я могу для Вас сделать?). Этот тест был на то, правильно ли мы думаем(ли) о командах, на которые префиксы #DD/#FD не влияют. Итого осталось уточнить, как реагируют префиксы #DD/#FD на длинную цепочку из самих себя. С тактами вроде ясно и с регистром R почти понятно, но на всякий случай лучше проверить. Это несложно. А вот с прерываниями будет небольшая рутина...
Круто! Я даже прочувствовал то самое давно забытое ощущение возбуждения от созерцания подобных полосок ))А у нас так глаз пристрелявши.
Итак, продолжаем. (Может удобнее будет, если я сразу коды забабах*ю? ). Следующая пара прожек:
иКод:ORG #8000 XOR A, A LD R, A DI DB #FD ; R += 1 DB #DD ; R += 1, PC -=1, R += 1 ??? DB #FD ; R += 1, PC -=1, R += 1 ??? DB #DD ; R += 1, PC -=1, R += 1 ??? DB #FD ; R += 1, PC -=1, R += 1 ??? DB #DD ; R += 1, PC -=1, R += 1 ??? DB #00 ; R += 1 LD A, R ; R += 2 OUT (#FE), A ; R += 1 JR $-11 ; R += 1
Если все предполагалось верно, тогда в обоих случаях бордюр должен быть постоянно белым и кол-во тактов между WR должно быть 81. Чуть позже наваяю поверку прерываний.Код:ORG #8000 XOR A, A LD R, A DI DB #DD ; R += 1 DB #DD ; R += 1, PC -=1, R += 1 ??? DB #DD ; R += 1, PC -=1, R += 1 ??? DB #FD ; R += 1, PC -=1, R += 1 ??? DB #FD ; R += 1, PC -=1, R += 1 ??? DB #FD ; R += 1, PC -=1, R += 1 ??? DB #00 ; R += 1 LD A, R ; R += 2 OUT (#FE), A ; R += 1 JR $-11 ; R += 1
Никаких "PC-=1"!
В обоих вариантах период 60 тактов.
Цвет брдюра -= 5 (R+=11).
(в US0367 аналогично)
The Undocumented Z80 Documented (by Sean Young) так же подтверждает это:
3.7. ... FD or DD should be seen as prefix setting a flag which says “use IX or IY in
stead of HL”, and not an instruction. In a large sequence of DD and FD bytes,
it is the last one that counts. Also any other byte (or instruction) resets this flag.
DDp,
Значит дело в некорректной эмуляции данной цепочки эмуляторами.
Имхо, z80_ex (c) boo_boo делает это наиболее точным образом- прерывания перекрываются внутренним флагом процессора, а не физическим DoS
Vitamin,
вы о чём?
Проверил на реале 2 последних фрагмента из поста #22.
Какие прерывания?
пошёл курить тему с начала.
Последний раз редактировалось DDp; 09.02.2008 в 14:58.
Изначально меня интересовало, как ведет себя процессор при выполнении особо длинной цепочки префиксов, в частности, поведение при приходе прерывания (см. первый пост).
ARTi для проверки идеи насчет уменьшения РС накидал примеры, косвенно проверяющие на основе изменения регистра R. Вот и все
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)