Важная информация

User Tag List

Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: вопросы по таймингу Z80/ZX

  1. #1
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию вопросы по таймингу Z80/ZX

    возникла вот пара вопросов:

    1) порты: какие порты спектрума с задержкой (выставляют WAIT), а какие -- нет?

    2) команды работы с памятью: если с командами, кладущими в память 1 байт все ясно (байт оказывается в ОЗУ по истечении последнего такта исполнения команды), то что с командами, кладущими 2 байта (PUSH regpair; EX (SP),regpair; CALL)?
    на каком такте в памяти оказывается первый байт, а на каком -- второй? не разом ведь, шина данных-то 8и-битная.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1. зависит от клона. смотри схемы (если только это не фирменные 48/128, где большая PAL)
    2. а какая практически разница? если очень интересно, дизассемблируй RealSpec, там поцикловая эмуляция Z80. счётчик тактов прибавляется после каждого цикла

  4. #3
    Member
    Регистрация
    12.10.2005
    Адрес
    San Francisco
    Сообщений
    144
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    2.
    Цитата Сообщение от boo_boo
    если с командами, кладущими в память 1 байт все ясно
    Не все так ясно. Каждая команда выполняется за несколько элементарных операций - M cycles. А каждый M cycle состоит из от 3 до 6 T cycles (клоков 3.5 МГц). Или больше если вставить WAIT. В справочнике по z80 все расписано. Например PUSH BC
    занимает 3 M cycles: вытащить 1 байт кода операции из памяти и записать 2 байта. В данном случае 11 T cycles. Поэтому все всегда считается в Т.

  5. #4
    Master Аватар для Conan
    Регистрация
    22.01.2005
    Адрес
    Moscow
    Сообщений
    2,250
    Спасибо Благодарностей отдано 
    42
    Спасибо Благодарностей получено 
    279
    Поблагодарили
    108 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1. Не встречал ни одного клона (с CPU CLK 3,5-4 МГц) где бы использовался WAIT при обращении к портам ввода/вывода. В моделях с турбо-режимом (с CPU CLK >= 7 МГц), такое решение необходимо для корректной работы FDC (КР1818ВГ93), который «не успевает» за более короткими операциями ввода-вывода. Причем в этом случае обычно тормозится обращение ко всем портам (для простоты схемотехники). В фирменных моделях WAIT использовался только при работе с ZX Interface 1. Практического интереса этот случай не представляет.

    2. Вопрос поставлен некорректно. Если интересует, когда процессор Z80 устанавливает информацию для записи в память на своей шине данных это один случай: посмотрите в любом приличном описании Z80, где есть временные диаграммы шин и описания команд. А если вас интересует, когда по времени физически информация оказывается в памяти, то надо смотреть схему конкретного компьютера. Ибо, каких только вариантов не было: быстрая/медленная память, WAIT-ы, отложенная запись, упорядоченные/неупорядоченные циклы ОЗУ и т.д.. Да и зачем вам это?

  6. #5
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SMT
    а какая практически разница? если очень интересно, дизассемблируй RealSpec, там поцикловая эмуляция Z80. счётчик тактов прибавляется после каждого цикла
    а если, например, мультиколор, есть же разница, на каком такте появится байт атрибутов?
    по крайней мере в случае EX(SP),rp, которая сперва младший байт меняет, потом старший. изврат, но вдруг...

  7. #6
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alexfreed
    2.
    Не все так ясно. Каждая команда выполняется за несколько элементарных операций - M cycles. А каждый M cycle состоит из от 3 до 6 T cycles (клоков 3.5 МГц). Или больше если вставить WAIT. В справочнике по z80 все расписано. Например PUSH BC
    занимает 3 M cycles: вытащить 1 байт кода операции из памяти и записать 2 байта. В данном случае 11 T cycles. Поэтому все всегда считается в Т.
    ага, нашел такой справочник
    там, правда, не всегда ясно, какой М-стейт какой элементарной операции соответствует -- с PUSH и EX понятно, а с CALL как-то странно: если два М-стейта сразу после М1 соответствуют сохранению PC на стеке, то почему у них длина в тактах разная?

  8. #7
    Master Аватар для boo_boo
    Регистрация
    10.05.2005
    Адрес
    Москва
    Сообщений
    715
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan
    Вопрос поставлен некорректно. Если интересует, когда процессор Z80 устанавливает информацию для записи в память на своей шине данных это один случай: посмотрите в любом приличном описании Z80, где есть временные диаграммы шин и описания команд. А если вас интересует, когда по времени физически информация оказывается в памяти, то надо смотреть схему конкретного компьютера. Ибо, каких только вариантов не было: быстрая/медленная память, WAIT-ы, отложенная запись, упорядоченные/неупорядоченные циклы ОЗУ и т.д.. Да и зачем вам это?
    Эмулятор Z80 пишу... Нашел описание

  9. #8
    Member
    Регистрация
    12.10.2005
    Адрес
    San Francisco
    Сообщений
    144
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от boo_boo
    ага, нашел такой справочник
    а с CALL как-то странно: если два М-стейта сразу после М1 соответствуют сохранению PC на стеке, то почему у них длина в тактах разная?
    Один из самых подробных документов (z80_user_manual.pdf) говорит нам:

    CALL M cycles = 5 T states=17 (4, 3, 4, 3, 3)

    А дальше мои домыслы.

    Которые по 4 - циклы М1 с регенерацией памяти. Которые по 3 - нормальные
    циклы обращения к памяти.

  10. #9
    Veteran Аватар для lvd
    Регистрация
    23.01.2005
    Сообщений
    1,113
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    3 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alexfreed
    Один из самых подробных документов (z80_user_manual.pdf) говорит нам:

    CALL M cycles = 5 T states=17 (4, 3, 4, 3, 3)

    А дальше мои домыслы.

    Которые по 4 - циклы М1 с регенерацией памяти. Которые по 3 - нормальные
    циклы обращения к памяти.
    Нет. CALL - один опкод, соотв-но и M1 один - вначале. А 3 и 4 сдедующие - чтение байтов адреса и декремент стека после последнего чтения. Последние 2 по 3 - пуши байтов на стек. Сравни, например, с PUSH - 5,3,3. Тоже стек декрементится вначале.
    --- Кто съел всю уху?

  11. #10
    Veteran Аватар для SMT
    Регистрация
    16.01.2005
    Адрес
    Бобруйск
    Сообщений
    1,267
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Conan
    В фирменных моделях WAIT использовался только при работе с ZX Interface 1
    может, там проц тормозится не через WAIT, а отключением клока, но, если в фирменных 48/128 не эмулировать задержки при обращении к порту #FE, бордюрные демы "поплывут"

Страница 1 из 3 123 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Вектор-06Ц: Общие вопросы
    от CityAceE в разделе Вектор
    Ответов: 844
    Последнее: 11.01.2024, 14:31
  2. Вопросы Викерсу и Альтвассеру.
    от Conan в разделе Люди
    Ответов: 20
    Последнее: 07.04.2006, 12:24
  3. Вопросы по Турбо-ВГ
    от Jukov в разделе Внешние накопители
    Ответов: 11
    Последнее: 13.01.2006, 12:18
  4. Система прерываний - есть вопросы.
    от TomCaT в разделе Программирование
    Ответов: 6
    Последнее: 14.10.2005, 16:35
  5. Мониторы: подключение к ним. Вопросы.
    от Dut_Norshi в разделе Изображение
    Ответов: 12
    Последнее: 25.06.2005, 04:54

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •