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

User Tag List

Показано с 1 по 7 из 7

Тема: Аппаратная трассировка

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1
    Master
    Регистрация
    27.04.2005
    Адрес
    Москва
    Сообщений
    886
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Аппаратная трассировка

    Работая на больших машинах мы уже привыкли к наличию режима аппаратной трассировки. Разговаривая с Caro по поводу синхронизации Magic с M1 в Пентагоне, навеялась мне идея...
    Вот интересно, в случае двухбайтной команды (с префиксом) сигнал M1 вырабатывается два раза (для обоих байтов) или все равно один?
    Если только один - а что если сделать схему, подающую NMI через определенное число сигналов M1? Вот вам и принцип работы пошаговой аппаратной трассировки на Z80. Работать это может например так:

    Код:
     Код на выходе из отладчика (предполагаем что остальные регистры
    уже восстановлены):
    
           LD A, #03       ;запрос NMI через 3 команды
           OUT (#EC), A    ;эта команда еще не считается (порт придумал на ходу)
           POP AF          ;восстанавливаем старое содержимое AF
                           ;(лежит на стеке отлаживаемой программы) - 1 команда
           RETN            ;вернулись - 2 команда
    
     Отлаживаемая программа (например):
    
           LD A,(HL)       ; вернулись сюда, эта команда будет выполнена (3 команда)
           INC A           ; перед этой командой будет NMI

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

  3. #2
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sonic
    Вот интересно, в случае двухбайтной команды (с префиксом) сигнал M1 вырабатывается два раза (для обоих байтов) или все равно один?
    Все равно один.

    PS. На самом деле не один, тут я ошибся
    Последний раз редактировалось caro; 25.11.2006 в 11:49.

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

    По умолчанию

    Цитата Сообщение от caro
    Все равно один.
    Круто! Значит - это возможно?

  5. #4
    Activist Аватар для fk0
    Регистрация
    18.02.2005
    Адрес
    St. Petersburg
    Сообщений
    415
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от caro
    Все равно один.
    Уверен??? По-моему на каждый байт КОП'а. Ни посмотреть негде, а память подводит.

  6. #5
    Guru Аватар для caro
    Регистрация
    14.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,721
    Спасибо Благодарностей отдано 
    16
    Спасибо Благодарностей получено 
    134
    Поблагодарили
    87 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fk0
    Уверен??? По-моему на каждый байт КОП'а. Ни посмотреть негде, а память подводит.
    Не зря говорят "век живи, век учись"
    Абсолютно был уверен, что /M1 выдается только в первом цикле выполнения команды.
    Наверное потому, что очень долго работал с КР580ВМ80 (I8080).
    Там то КОПы все однобайтные и M1 выдается один раз в первом машинном цикле при чтении этого кода.
    В Z80 действительно M1 является признаком чтения КОП, и в случае команд, имеющих несколько байт в КОПе (команды с префиксами), каждая операция чтения кода, являющегося частью КОП, сопровождается выдачей M1.
    Для того, что бы окончательно удостоверится в этом, написал небольшой тест и снял осцилограмму:
    Код:
            ORG     8000h
            DI
    cikl:  OUT     (C),A
            JP        cikl
    Развертка синхронизирована сигналом /IORQ
    Последний раз редактировалось caro; 03.04.2011 в 18:10.

  7. #6
    ZEK
    Гость

    По умолчанию

    Цитата Сообщение от caro
    Все равно один.
    На каждый байт КОП генериться сигнал M1 это обязательный атрибут машинного цикла INSTRD.

  8. #7
    ZEK
    Гость

    По умолчанию

    Кстати посмоти осцилограмму что твориться в цикле подтверждения NMI, а то уже много раз натыкался что подтверждение NMI это цикл подтверждения INT + активный сигнал RD а в DS написанно что NMI Ask это холостой цикл INSTRD

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

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

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

Ваши права

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