Speccy - наш выбор!  
ZXPRESS
ZXTUNES
Virtual TR-DOS
World of Spectrum
ZX Spectrum Old Demos •

Go Back   Speccy - наш выбор! > Эмуляция ZX Spectrum'а > Эмуляторы

Reply
 
Thread Tools Display Modes
Old 6th February 2008, 22:46   #1
Master
 
Vladimir Kladov's Avatar
 
Join Date: 9th February 2005
Location: Новосибирск
Posts: 924
Thanks: 0
Thanked 37 Times in 25 Posts
Vladimir Kladov will become famous soon enough
Default

Прочитал тред. Не смешно. Длинная команда выполняется как серия коротких это известно давным давно. Соответственно, если "длинная" команда после очередного выполнения затирает себя (например), то на следующей итерации выполняется уже модифицированная команда. И прерывания обрабатываются как после обычной короткой команды LDI.

Короче: LDIR = LDI;PC=PC-2. И точка. Осциллографом тыкать сразу - нет чтобы доки почитать...
__________________
Последнюю версию EmuZWin (2.7) можно получить по этой ссылке, а "официальная" страница с описанием здесь. Если что-то не пашет, берите там же версии 2.6 или старше. Предварительная версия EmuZGL лежит здесь.
Vladimir Kladov is offline   Reply With Quote
Old 6th February 2008, 23:51   #2
Vitamin C++
 
Vitamin's Avatar
 
Join Date: 14th January 2005
Location: Таганрог, Россия
Posts: 3,709
Thanks: 423
Thanked 1,343 Times in 759 Posts
Vitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant future
Default

Quote:
Originally Posted by Vladimir Kladov View Post
Короче: LDIR = LDI;PC=PC-2
Это уж давно известно. Вопрос стоял про выполнение НЕ ИТЕРАТИВНЫХ команд, а именно цепочки префиксов.
Vitamin is offline   Reply With Quote
Old 8th February 2008, 01:00   #3
Member
 
ARTi's Avatar
 
Join Date: 6th May 2006
Location: Санкт-Петербург
Posts: 127
Thanks: 4
Thanked 6 Times in 4 Posts
ARTi is on a distinguished road
Default

Vladimir Kladov

Quote:
Короче: LDIR = LDI;PC=PC-2. И точка.
Мне бы эту гениальную мысль, да лет 10 назад... а что теперь прошлое ворошить...
Quote:
Прочитал тред
Честно-честно?
Quote:
Осциллографом тыкать сразу - нет чтобы доки почитать...
Ну-ну, зачем же так злобно... Лучше на работе долго не задерживаться, да спать побольше, а еще на людей, которые раздражают и злят, не обращать особого внимания, тогда и настроение гораздо лучше будет, и быть может производительность повысится до версии 2.8 (а то и 3.0) .
А то будете как я 4-мя постами выше

DDp
Вы как всегда на высоте, примите мои благодарности (кстати, что я могу для Вас сделать?). Этот тест был на то, правильно ли мы думаем(ли) о командах, на которые префиксы #DD/#FD не влияют. Итого осталось уточнить, как реагируют префиксы #DD/#FD на длинную цепочку из самих себя. С тактами вроде ясно и с регистром R почти понятно, но на всякий случай лучше проверить. Это несложно. А вот с прерываниями будет небольшая рутина...

Quote:
А у нас так глаз пристрелявши.
Круто! Я даже прочувствовал то самое давно забытое ощущение возбуждения от созерцания подобных полосок ))

Итак, продолжаем. (Может удобнее будет, если я сразу коды забабах*ю? ). Следующая пара прожек:

Code:
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
и
Code:
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
Если все предполагалось верно, тогда в обоих случаях бордюр должен быть постоянно белым и кол-во тактов между WR должно быть 81. Чуть позже наваяю поверку прерываний.
ARTi is offline   Reply With Quote
Old 9th February 2008, 15:10   #4
Activist
 
Join Date: 21st August 2006
Location: Ижевск
Posts: 452
Thanks: 3
Thanked 298 Times in 133 Posts
DDp is just really niceDDp is just really niceDDp is just really niceDDp is just really niceDDp is just really nice
Default

Никаких "PC-=1"!
В обоих вариантах период 60 тактов.
Цвет брдюра -= 5 (R+=11).
(в US0367 аналогично)

The Undocumented Z80 Documented (by Sean Young) так же подтверждает это:
Quote:
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 is offline   Reply With Quote
Old 9th February 2008, 15:38   #5
Vitamin C++
 
Vitamin's Avatar
 
Join Date: 14th January 2005
Location: Таганрог, Россия
Posts: 3,709
Thanks: 423
Thanked 1,343 Times in 759 Posts
Vitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant future
Default

DDp,
Значит дело в некорректной эмуляции данной цепочки эмуляторами.
Имхо, z80_ex (c) boo_boo делает это наиболее точным образом- прерывания перекрываются внутренним флагом процессора, а не физическим DoS
Vitamin is offline   Reply With Quote
Old 9th February 2008, 15:49   #6
Activist
 
Join Date: 21st August 2006
Location: Ижевск
Posts: 452
Thanks: 3
Thanked 298 Times in 133 Posts
DDp is just really niceDDp is just really niceDDp is just really niceDDp is just really niceDDp is just really nice
Default

Vitamin,
вы о чём?
Проверил на реале 2 последних фрагмента из поста #22.
Какие прерывания?


пошёл курить тему с начала.

Last edited by DDp; 9th February 2008 at 15:58.
DDp is offline   Reply With Quote
Old 9th February 2008, 15:59   #7
Vitamin C++
 
Vitamin's Avatar
 
Join Date: 14th January 2005
Location: Таганрог, Россия
Posts: 3,709
Thanks: 423
Thanked 1,343 Times in 759 Posts
Vitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant future
Default

Quote:
Originally Posted by DDp View Post
вы о чём?
Изначально меня интересовало, как ведет себя процессор при выполнении особо длинной цепочки префиксов, в частности, поведение при приходе прерывания (см. первый пост).
ARTi для проверки идеи насчет уменьшения РС накидал примеры, косвенно проверяющие на основе изменения регистра R. Вот и все
Vitamin is offline   Reply With Quote
Old 9th February 2008, 22:19   #8
Activist
 
Join Date: 21st August 2006
Location: Ижевск
Posts: 452
Thanks: 3
Thanked 298 Times in 133 Posts
DDp is just really niceDDp is just really niceDDp is just really niceDDp is just really niceDDp is just really nice
Default

Quote:
Originally Posted by Vitamin View Post
Изначально меня интересовало, как ведет себя процессор при выполнении особо длинной цепочки префиксов, в частности, поведение при приходе прерывания
(Угу, пропустил начало)
(по-экспериментировал на реале) Во время длинной последовательности префиксов прерывания не срабатывают.
US 0.36.7 внешне ведёт себя как реал (вот только вешается при SoundDrv=ds)
Attached Files
File Type: zip seq1.zip (1.8 KB, 119 views)
DDp is offline   Reply With Quote
The Following User Says Thank You to DDp For This Useful Post:
introspec (12th November 2013)
Old 10th February 2008, 00:40   #9
Vitamin C++
 
Vitamin's Avatar
 
Join Date: 14th January 2005
Location: Таганрог, Россия
Posts: 3,709
Thanks: 423
Thanked 1,343 Times in 759 Posts
Vitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant futureVitamin has a brilliant future
Default

Quote:
Originally Posted by DDp View Post
US 0.36.7 внешне ведёт себя как реал
В отладчик дает зайти? (см. сообщения GriV'а о поведении эмуляторов)
Vitamin is offline   Reply With Quote
Old 10th February 2008, 12:47   #10
Activist
 
Join Date: 21st August 2006
Location: Ижевск
Posts: 452
Thanks: 3
Thanked 298 Times in 133 Posts
DDp is just really niceDDp is just really niceDDp is just really niceDDp is just really niceDDp is just really nice
Default

Quote:
Originally Posted by Vitamin View Post
В отладчик дает зайти?
В отладчик входит (PC=FB01).
Пошагово последовательность префиксов выполняется как одна комманда.
Отображается как попало (короткий буфер???).

И ещё...
На реальном проце поведение сигналов M1 и RFSH на последовательности префиксов такое же, как на последовательности NOP-ов.
Attached Files
File Type: 7z seq1_us_dbg_bmp.7z (36.1 KB, 134 views)
DDp is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +4. The time now is 21:41.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Map Яндекс.Метрика