User Tag List

Страница 9 из 81 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 803

Тема: Реверс-инжиниринг Z80

  1. #81

    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,089
    Спасибо Благодарностей отдано 
    281
    Спасибо Благодарностей получено 
    70
    Поблагодарили
    49 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Кря Кря Посмотреть сообщение
    У меня есть подключенный к DE1 z80, могу провести разного рода эксперименты, при условии понятного мне условия теста и тестового кода
    Это дает огромные возможности. Скажем, если снизить тактовую частоту Z80 и подставлять ему команду SCF (или какая там нужна) в циклах M1 по всем адресам памяти - то можно выдержать достаточно времени до гарантированного разряда емкостей затворов, если от них что-нибудь зависит.

  2. #82

    Регистрация
    18.01.2010
    Адрес
    Крым
    Сообщений
    238
    Спасибо Благодарностей отдано 
    7
    Спасибо Благодарностей получено 
    41
    Поблагодарили
    34 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Игрался с z80 и МК. Могу задавать любую частоту, могу анализировать всё что хош. Выставляйте условия.

    Эти 2 пользователя(ей) поблагодарили M80 за это полезное сообщение:

    anasana(23.08.2024), Titus(23.08.2024)

  3. #83

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,374
    Спасибо Благодарностей отдано 
    1,695
    Спасибо Благодарностей получено 
    2,214
    Поблагодарили
    868 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Кря Кря Посмотреть сообщение
    Нужен конкретно zilog или nmos от других производителей тоже подойдут?
    А вот этого я не знаю. Я даже не знаю, с какой конкретно модели в проекте Z80 Explorer снимали схему.
    Но, думаю, стоит попробовать на любом NMOS.

    - - - Добавлено - - -

    Цитата Сообщение от M80 Посмотреть сообщение
    Игрался с z80 и МК. Могу задавать любую частоту, могу анализировать всё что хош. Выставляйте условия.
    Задача такая. Если на спектруме, то по адресу $4000 разместить примерно такой код:

    DI
    LD A,0 (или $FF для второго теста)
    OR A
    NOP (загрузка кеша текущими значениями флагов)
    ADD HL,DE (или SCF) (на все 48Кб)
    В конце выполнения смотрим регистр флагов

    - - - Добавлено - - -

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    а теперь внимание, вопрос: выставляется на основании чего?
    На основании кода команды. А именно:



    - - - Добавлено - - -

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    лишним выглядит, операция уже после декодирования известна
    Кому известна? Блоку декодирования команд и флагов) А АЛУ неизвестна. АЛУ как раз ориентируется на флаг, чтобы инвертировать аргумент.

    - - - Добавлено - - -

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    инверсия - НЕ унарный минус! (в дополнительном коде)
    Разумеется. Но по скольку АЛУ всегда делает ADC, а не ADD, то как раз инвертируя входящий перенос и получается вычитание. Вообще, т.к. блок АЛУ 4-битный, он не ориентируется на флаг C, он ориентируется на флаг H. Думаю, поэтому флаг полупереноса вообще и был сделан в процессоре в том числе, т.к. он фактически является связующим переносом между двумя отдельными действиями 4-битного АЛУ.

    - - - Добавлено - - -

    Кстати, еще из интересного.

    Регистр WZ, выбирается всегда, когда на том или ином этапе выполнения команды не выбран другой регистр. Там так и стоит широкое условие, что если не AF, если не HL, DE и т.д., то тогда выбираем WZ.

    Пока с WZ тоже не разбирался, но думаю, он участвует во всех промежуточных операциях типа вычисления индекса, эффективного адреса относительных переходов и т.д.

    - - - Добавлено - - -

    И еще кстати - я думаю, что то, что имеется в виду под регистром MEMPTR, от которого в 3 и 5 битах в регистре флагов остаются следы, на самом деле не существует. Это просто остаточный заряд на шинах HBUS/LBUS. А так как LBUS используется для формирования флагов, и во время формирования флагов 3 и 5 биты просто не презаряжаются, а остаются, как есть, то и получается соответствующий результат.

    - - - Добавлено - - -

    Есть, конечно регистр PCR (так его назвали авторы Z80 Explorer). Может его и можно считать MEMPTR, т.к. через него инкрементируются 16-битные регистры типа PC, IR (7 бит).

    - - - Добавлено - - -

    Если кому интересно, текущий набросок выглядит так:

    NMOS Z80 - sketch rev.14.pdf

    Эти 2 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Barmaley_m(23.08.2024), Reobne(23.08.2024)

  4. #84

    Регистрация
    08.09.2005
    Адрес
    Воронеж
    Сообщений
    4,963
    Записей в дневнике
    3
    Спасибо Благодарностей отдано 
    319
    Спасибо Благодарностей получено 
    312
    Поблагодарили
    236 сообщений
    Mentioned
    11 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Кому известна? Блоку декодирования команд и флагов) А АЛУ неизвестна. АЛУ как раз ориентируется на флаг, чтобы инвертировать аргумент.
    казалось бы, почему декодеру не сообщить тип операции в АЛУ напрямую
    а так выходит, что многие команды флаг по сути портят (для единственного штатного применения)
    ну, и под значениями флагов в доках понимается значение перед выполнением команды, а не в процессе
    Прихожу без разрешения, сею смерть и разрушение...

  5. #85

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    ADD HL,DE (или SCF) (на все 48Кб)
    при сложении наверно надо еще записать #0000 в DE.
    проверил на сером +2

    Код:
    add hl,de ; a=#00 ; ............... ; F=#44
                a=#FF ; ................; F=#84
    
    SCF ;       a=#00 ; ............... ; F=#45
                a=#FF ; ................; F=#AD
    отличия с эмулем есть !!!
    SpecEmu выдаёт #6C

    Последний раз редактировалось goodboy; 23.08.2024 в 15:51.

    Эти 2 пользователя(ей) поблагодарили goodboy за это полезное сообщение:

    Barmaley_m(23.08.2024), Titus(23.08.2024)

  6. #86

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,374
    Спасибо Благодарностей отдано 
    1,695
    Спасибо Благодарностей получено 
    2,214
    Поблагодарили
    868 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от Lethargeek Посмотреть сообщение
    а так выходит, что многие команды флаг по сути портят (для единственного штатного применения)
    Выходит, что так. Особенно с флагом полу-переноса.

    - - - Добавлено - - -

    Цитата Сообщение от goodboy Посмотреть сообщение
    при сложении наверно надо еще записать #0000 в DE.
    Это не обязательно, т.к. мы смотрим флаг S, а на него ADD HL,DE не влияет не зависимо от аргументов.

    - - - Добавлено - - -

    Цитата Сообщение от goodboy Посмотреть сообщение
    проверил на сером +2
    По твоему тесту сбоя не видать. У тебя NMOS процессор?

  7. #87

    Регистрация
    27.02.2005
    Адрес
    москва
    Сообщений
    14,289
    Записей в дневнике
    1
    Спасибо Благодарностей отдано 
    202
    Спасибо Благодарностей получено 
    1,456
    Поблагодарили
    946 сообщений
    Mentioned
    18 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    по-маркировке ( Z8400APS) - да

  8. #88

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,374
    Спасибо Благодарностей отдано 
    1,695
    Спасибо Благодарностей получено 
    2,214
    Поблагодарили
    868 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    по-маркировке ( Z8400APS) - да
    Надо попробовать еще на других. Но может действительно не успевает заряд разрядиться.

    Если ничего не выйдет, то может кто-то смоделирует на какой-нить железке ситуацию, когда процессору скармливается несколько секунд один и тот же опкод, и потом уже смотреть флаги. Потому что реально интересно, за сколько времени разрядится ячейка.

    - - - Добавлено - - -

    Так с данным тестом отбой.

    Почему? Потому что я поленился посмотреть потранзисторную версию этого фрагмента, и там все хорошо сделано. Постоянно регенерируется с помощью CLK.
    Буду в следующий раз внимательнее проверять подобные подозрения.

    - - - Добавлено - - -

    Эти 2 пользователя(ей) поблагодарили Titus за это полезное сообщение:

    Barmaley_m(23.08.2024), Reobne(23.08.2024)

  9. #89

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,374
    Спасибо Благодарностей отдано 
    1,695
    Спасибо Благодарностей получено 
    2,214
    Поблагодарили
    868 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от goodboy Посмотреть сообщение
    отличия с эмулем есть !!!
    SpecEmu выдаёт #6C
    Ну это из-за другой особенности, из-за CCF, я думаю.

    - - - Добавлено - - -

    Погулял по транзисторной версии схемы, никакой утечки во всем блоке формирования флагов не нашел
    Значит недокументированное поведение CCF не связано именно с утечкой в блоке флагов.
    Надо будет посмотреть последовательно алгоритм выполнения CCF.

    - - - Добавлено - - -

    Проследил всю цепочку выполнения CCF.
    Отличия от обычного NOP:
    1. В такте T5 (T4 + 1) копируется кешированный ранее флаг C во флаг H
    2. В такте T6 ничего не происходит
    3. В такте T7 (T4 + 3) копируется инверсная копия H во флаг C.
    4. В такте T8 (Т4 + 4) флаги выставляются на шину LBUS (кроме 3 и 5).

    Поэтому если какой-то глюк и есть в CCF, то его надо искать только в 3 и 5 флагах, т.е. в состоянии LBUS во время выполнения CCF.

    Но на LBUS я тоже не вижу никакого мусора. Туда копировался флаг F перед началом команды, значит флаги 3 и 5 должны были сохраниться.

    Словом, пока не вижу по схеме потенциальных глюков, откуда они взялись в тестах иностранных товарищей.

    А что касается команды SCF, то она работает абсолютно также, как CCF, за единственным исключением - в такте T5 флаг H очищается. Поэтому флаг H=0 при инверсии становится 1, и C становится равной 1.
    Последний раз редактировалось Titus; 23.08.2024 в 20:02.

    Этот пользователь поблагодарил Titus за это полезное сообщение:

    Barmaley_m(24.08.2024)

  10. #90

    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    14,374
    Спасибо Благодарностей отдано 
    1,695
    Спасибо Благодарностей получено 
    2,214
    Поблагодарили
    868 сообщений
    Mentioned
    69 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Попричесывал блок формирования флагов, переделав все двунаправленные ключи обьеденив их многопортовые триггеры. Теперь все выглядит намного нагляднее.
    Вложения Вложения

    Этот пользователь поблагодарил Titus за это полезное сообщение:

    Reobne(26.08.2024)

Страница 9 из 81 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 1739
    Последнее: 09.01.2025, 10:55
  2. Ответов: 32
    Последнее: 18.12.2024, 18:19
  3. Реверс-инжиниринг игры Boovie
    от Oleg N. Cher в разделе Программирование
    Ответов: 41
    Последнее: 09.01.2022, 23:07
  4. Реверс МК-92
    от Случайность в разделе Программируемые калькуляторы
    Ответов: 55
    Последнее: 24.04.2021, 23:47
  5. Реверс инжиниринг печатной платы
    от Filin в разделе Несортированное железо
    Ответов: 36
    Последнее: 11.03.2018, 22:46

Ваши права

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