![]() |
вопросы по таймингу Z80/ZX
возникла вот пара вопросов:
1) порты: какие порты спектрума с задержкой (выставляют WAIT), а какие -- нет? 2) команды работы с памятью: если с командами, кладущими в память 1 байт все ясно (байт оказывается в ОЗУ по истечении последнего такта исполнения команды), то что с командами, кладущими 2 байта (PUSH regpair; EX (SP),regpair; CALL)? на каком такте в памяти оказывается первый байт, а на каком -- второй? не разом ведь, шина данных-то 8и-битная. |
1. зависит от клона. смотри схемы (если только это не фирменные 48/128, где большая PAL)
2. а какая практически разница? если очень интересно, дизассемблируй RealSpec, там поцикловая эмуляция Z80. счётчик тактов прибавляется после каждого цикла |
2.
Quote:
занимает 3 M cycles: вытащить 1 байт кода операции из памяти и записать 2 байта. В данном случае 11 T cycles. Поэтому все всегда считается в Т. |
1. Не встречал ни одного клона (с CPU CLK 3,5-4 МГц) где бы использовался WAIT при обращении к портам ввода/вывода. В моделях с турбо-режимом (с CPU CLK >= 7 МГц), такое решение необходимо для корректной работы FDC (КР1818ВГ93), который «не успевает» за более короткими операциями ввода-вывода. Причем в этом случае обычно тормозится обращение ко всем портам (для простоты схемотехники). В фирменных моделях WAIT использовался только при работе с ZX Interface 1. Практического интереса этот случай не представляет.
2. Вопрос поставлен некорректно. Если интересует, когда процессор Z80 устанавливает информацию для записи в память на своей шине данных это один случай: посмотрите в любом приличном описании Z80, где есть временные диаграммы шин и описания команд. А если вас интересует, когда по времени физически информация оказывается в памяти, то надо смотреть схему конкретного компьютера. Ибо, каких только вариантов не было: быстрая/медленная память, WAIT-ы, отложенная запись, упорядоченные/неупорядоченные циклы ОЗУ и т.д.. Да и зачем вам это? |
Quote:
по крайней мере в случае EX(SP),rp, которая сперва младший байт меняет, потом старший. изврат, но вдруг... |
Quote:
там, правда, не всегда ясно, какой М-стейт какой элементарной операции соответствует -- с PUSH и EX понятно, а с CALL как-то странно: если два М-стейта сразу после М1 соответствуют сохранению PC на стеке, то почему у них длина в тактах разная? |
Quote:
|
Quote:
CALL M cycles = 5 T states=17 (4, 3, 4, 3, 3) А дальше мои домыслы. Которые по 4 - циклы М1 с регенерацией памяти. Которые по 3 - нормальные циклы обращения к памяти. |
Quote:
|
Quote:
|
| All times are GMT +4. The time now is 18:14. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.