Ну не знаю, как ещё лучше донести мысль что иметь на руках нетлист гораздо полезнее чем "из одной картинки делать другую" (из фото чипа - картинку схемы).
CMOS Z80 уже на подходе, скоро будет купаться в кислоте, думаю в эти выходные.
Вид для печати
Ну не знаю, как ещё лучше донести мысль что иметь на руках нетлист гораздо полезнее чем "из одной картинки делать другую" (из фото чипа - картинку схемы).
CMOS Z80 уже на подходе, скоро будет купаться в кислоте, думаю в эти выходные.
Через меня вряд ли быстро получится, т.к. я планирую реверсить только блоки с кастомным дизайном (АЛУ предположительно CLA, а также блок регистров).
Остальным будет заниматься nukeykt
Купаемый в кислоте CMOS з80 - это от тошибы: https://siliconpr0n.org/map/toshiba/...mz_gf50x-1.25/ (Фотки сделаны Борисом onidev, но только металл, чего нам не достаточно).
У меня есть в процессе восстановления масок "другой" CMOS Z80, родной зилоговский (https://github.com/emu-russia/SEGAChips/tree/main/Z80), но пока им заниматься лень. С ним не очень гладко всё прошло, delayer получился очень "грязный".
Заходи в дис ему раша https://discord.gg/BMNEQWnDpW
выше пост с инфой.Цитата:
А из чего же тогда отреверсен Z80, который используется в проекте Сега?
ЕМНИП nukeykt реверсил NMOS версии 68к и z80. Cmos версии более совершенны по дизайну, вот их и захотели копнуть. Нюк обещал даже в логисиме модельку Z80 зарисовать. Можно будет потыкать в нее палкой, аналогичным образом как это было с MOS 6502. В NMOS дизайне очень много интересных мест, например те же двусторонние соединения между шинами. В транзисторах эти PASS FETы выглядят примитивно, однако это доставляет при описании и переводе всего этого добра в синхронный дизайн ПЛИС. Я немало времени потратил на шины нмос 6502 год назад, работая над его синхронным дизайном. Тут к сожалению без понимания как оно работает не обойтись. Хотя при программной симуляции наверное это все можно описать достаточно простым способом.
nukeykt перегонял NMOS версию, вроде как ту же самую что и ты ковыряешь =)
CMOS Z80 тоже хотим (точнее хочет nukeykt), т.к. делать больше нечего, все чипы сэги "декомилированы". Есть ещё правда сэга ЦД, но она нафиг никому не нужна, хотя ХВМ и засылал под неё чипы. Пока интереса ни у кого нет реверсить эту лажу)
Было бы интересно. Тем более, что некоторые особенности работы, которые описывают на форумах, например, непонятное поведение флагов 5 и 3 после команд SCF и CCF, на NMOS не прослеживаются. Во всяком случае, при логическом анализе схемы. Ну просто копируются значения флагов 5 и 3, и все. Во всяком случае, я на беглый взгляд этого не вижу.
А уж как мне это интересно)) Так никто внятно мне и не сказал, от чего зависит, от самого проца, или от обвязки вокруг него. Приблизительно третья часть моих процессоров может похвастать этим синдромом)) Если от обвязки вокруг - тогда почему при смене на другой, хороший:), процессор - этот синдром пропадает напрочь?
Как это может зависеть от обвязки, если содержимое флагов 5 и 3 - это исключительно заряд на шине LBUS, оставшийся от пересылки через нее флага F в данном случае, или же, например, регистра A в более классическом случае.
Это я про NMOS.
Каким именно синдромом хвастаются твои процессоры? В каких тестах и как?
В недокументированных конечно. в том то и дело, что все остальное работает идеально. а, ну раз не-документированные - значит можно работать кто-в-лес-кто-по-дрова?))) я то всегда думал, что даже такие мало-документированные вещи должны работать у всех одинаково. или нет))
Я выше приводил ссылки на тесты от Патрика, с картинками паттернов.
Да, по сути это программа в статике!! графически показывает содержимое этих самых регистров. в зависимости от производителя оно несколько отличается. Это нормально. Не нормально - это когда картинка вовсе не статическая. Это что значит? что регистры меняют свое содержимое? от вспышек на Солнце??
этим тестом не один десяток процев проверяли и не один человек. и cmos и nmos. тут без разницы, только от производителя паттерн зависит. Ну кроме случаев синдрома - паттерн тот же самый, но отдельные пиксели меняют свое значение.
Можешь в любом эмуле спековском запустить. Буудет один из трех вариантов, но картинка будет неподвижная.
- - - Добавлено - - -
такой косяк чаще всего в NMOS и был. ЗлойКиллер документировал, что за проц, мне это не надобно было
я не могу сказать точно, NMOS\CMOS, это было много лет назад.
Вот Sharp!!! кпримеру
https://drive.google.com/file/d/1lxI...ew?usp=sharing
так же себе NEC фигово вел, и наш Т34 вроде, который трудно заподозрить что он не NMOS
вот тот же комп, но с процессором ST - идеальная картинка
https://media.discordapp.net/attachm...754&height=424
а вот ST - с синдромом, справа видно
https://drive.google.com/file/d/1Z-T...ew?usp=sharing
Рассмотрев внимательнее, стало видно, что особенности есть!
В отличие от классических АЛУ-команд, команда SCF в такте T3 не устанавливает результат работы АЛУ на обьединенную шину HBUS/LBUS (например, содержимое регистра A), в связи с чем при записи флагов 5 и 3 с шины LBUS в регистр F в такте T4, происходит запись заряда, оставшегося там с предыдущего состояния LBUS, которое следует рассмотреть более подробно.
Как уже упоминалось, если команда в конце своей работы обновляет регистр F, то следующая за ней команда не перечитывает F из регистрового файла, а читает его прямо с шины LBUS, т.к. в этот момент на шину LBUS выдаются флаги. Что же касается флагов 5 и 3, то от предыдущего такта (Т3) на шине LBUS остается сильный заряд (например, значение регистра А), который и попадает во флаги 5 и 3.
Говоря еще проще по шагам: В такте T3 шины LBUS и HBUS обьединены, на них находится содержимое регистра A. В такте T4 шины LBUS и HBUS разьединяются, и с шины LBUS происходит запись в регистр F, а на шину HBUS читается регистр A из регистрового файла.
Теперь рассмотрим отличие работы команды SCF от классической АЛУ-команды.
Рассмотрим такую последовательность команд ALU A,r; SCF; SCF; SCF и т.д.
В такте T3 на шине LBUS было какое-то значение, т.е. оставшееся с предыдущей команды (ALU A,r) значение регистра A. В такте T4 оно записывается фо флаги 5 и 3, и также в этом такте читается значение регистра А на HBUS. В такте T1 следующего цикла шины HBUS и LBUS обьединяются, но на них ничего не выдается, т.к. команда SCF не использует АЛУ. И тут возникает вопрос, какой заряд сильнее? 0 или 1? Если 0 сильнее, то на обьединенной шине HBUS/LBUS будет содержимое A & F. Если 1 сильнее, то будет A | F. В течение тактов T1, T2, T3 ничего не меняется. А далее в такте T4 шины HBUS и LBUS снова разьединяются, на шину HBUS читается регистр A для следующей команды, а вот шина LBUS все еще сохраняет заряд A & F, и в таком виде записывает его в регистр флагов (мы тут рассматриваем только флаги 5 и 3). Далее в такте T1 следующего цикла шины HBUS и LBUS опять обьединяются, и на шине HBUS мы имеем сильный обновленный заряд (регистр A), и электрически соединяясь с шиной LBUS, на которой заряд более слабый, оставшийся от соединения шин 4 такта назад, что мы получим в сумме?
Вот это вопрос. Шина HBUS сильно заряжена, а шина LBUS осталась с прежним зарядом, являющимся электрической суммой LBUS и HBUS предыдущего цикла. Если мы рассматриваем последовательность команд SCF, то регистр A не изменяется, значит HBUS подзаряжается одинаковым значением, которое постепенно (за сколько команд SCF) пересилит ослабевающий заряд LBUS, и в итоге через несколько итераций содержимое F (5 и 3 флаги) будет равняться не электрической сумме A и F, а только A, не зависимо от того, что сильнее, 0 или 1.
Вот такие теоретические рассуждения, которые требуют проверки на практике.
Если теория верна, то последовательность команд типа:
Код:LD HL,$FFFF($0000,$FF00,$00FF)
PUSH HL
POP AF
SCF
долнжны давать разное значение флагов 5 и 3 (пока это тестить не надо, надо подумать о нормальном тесте).Код:LD HL,$FFFF($0000,$FF00,$00FF)
PUSH HL
POP AF
SCF(100 раз)
- - - Добавлено - - -
Поискал в интернете, и нашел здесь подтверждение моих предположений для родного NMOS:
- - - Добавлено - - -Код:if <previous instruction modified the flags> then
YF = A.5
XF = A.3
else
YF = YF | A.5
XF = XF | A.3
endif
Все-таки OR, а не AND (т.е. 1 более сильные).
Если предыдущая команда не модифицирует флаги, то перед выполнением команды, регистр F читается на LBUS из регистрового файла, и заряд сильный, равноценный заряду на HBUS, куда читается A. Поэтому получается некая электрическая сумма по OR.
А вот если предыдущая команда модифицирует флаги, то перед выполнением команды, регистр F (5 и 3 биты) читаются с LBUS, где остались слабо заряжены от предыдущей команды, поэтому хорошо заряженный HBUS (регистр A) их пересиливает.
- - - Добавлено - - -
Итак, почему же плавают значения? Да потому что после обьединения HBUS и LBUS пртивоположные заряды дают нечто среднее, не 0 и 1, а 0.5. И в зависимости от чувствительности затворов, это может прочитаться как 0, а может как 1. Судя по всему, тяготеет ближе к 1, но т.к. все же на грани порога, то любой чих, примесь в кристалле, нюансы производства, наводки на процессор с платы, температура, могут сместить эту шаткую границу, поэтому и нестабильность, как я думаю.
Ввиду того, что загадка установки 5 и 3 флагов в командах SCF/CCF для NMOS Z80 наконец-то разгадана, написал несколько тестов шума SCF для реалов (тестировать CCF нет смысла ввиду абсолютно одинаковой внутренней реализации этих команд).
В отличие от этого теста, все более наглядно, нет индикации бит, никак не участвующих в формировании 5 и 3 флагов. Заполнение экрана предполагаемым шумом более однородное и визуально понятное.
Верхняя треть экрана отображает тест бита 3 (черный с белым), средняя треть экрана отображает тест бита 5 (синий с голубым).
Также каждая треть разделена на несколько зон с разными комбинациями начальных флагов для теста.
В архиве три теста:
1. Классический SCF после команды 'не влияющей на флаги'.
2. Тоже самое, но два SCF подряд.
3. Классический тест, но перед SCF выполняется команда, влияющая на флаги.
На эмуляторах поля будут однородные.
На реалах исходя из теоретических предположений, некоторые поля на некоторых процессорах будут шуметь. Вот это самое интересное и нужное.
Расчехляйте ваши реалы и запускайте тесты!
Пример картинки из теста на эмуляторе:
https://pic.maxiol.com/images2/17275...7898589.01.png
- - - Добавлено - - -
p.s.: Можете тестировать на любом реале, не обязательно на NMOS.
p.p.s: Тест убран, как устаревший. Используете Test SCF 9.
Ну что, я то готов тестировать. Но...
Проц сейчас стоит тот, что нестабильный, что надо.
но надо или исходники тестов или с загрузчиком под ТР-ДОС. Тап-ку грузить сильно проблемно.
понятно, что там предельно просто, но с исходниками я бы быстрее трд сделал.
а так то пока один сделал и запустил :))
ну сейчас, неспеша сделаю все три и озвучу результат :))
- - - Добавлено - - -
два SCF подряд - я думаю не имеют смысла, но это так, мысли вслух.
Вобщем второй и третий тест стабильно, не шумят.
Авот первый очень интересно шумит. Если считать по полоскам сверху вниз, то шумит нижняя вторая половина первой белой полосы и
первая верхняя половина последней синей полосы..
Там натуральные иероглифы в динамике!! возможно кЕтайцы или корейцы что-то знакомое точно узнали бы!!
https://s1.hostingkartinok.com/uploa...8cc5fa5ab8.jpg
сорри, что ч\б, но результат и так виден))
Немножко странновато, если верить тому, что этот процессор NMOS.
- - - Добавлено - - -
Для чистоты эксперимента надо было сделать и такие варианты.
- - - Добавлено - - -
Это очень радует. Значит теория совпала с практикой.
Обязательно нужно записать видео этого шума.
Во втором и третьем тесте что на месте шума? Белое или черное?
- - - Добавлено - - -
И еще, какая полная маркировка процессора?
- - - Добавлено - - -
Рисунок наводит на некоторые дополнительные мысли о перекрестном влиянии некоторых линий. Нужно видео, и нужны еще тесты с разных процессоров. А еще интересно, не будет ли меняться картина, если потрогать процессор пальцем, или слегка нагреть его.
на тесте Патрика картинка менялась после каких нибудь манипуляций :)
https://drive.google.com/file/d/1amu...ew?usp=sharing
второй третий перепроверю. С процем сложнее, у меня Профи (я не думаю, что это имеет значение при тесте процессоров?)), и проца не видно, но точно не Т34, он на другой плате стоит..
упд - на втором-третьем тесте полоски ровно такие же, как у goodboy, даже фотографировать нет смысла
Не имеет. Только разве что качество питания, напряжение и фильтрация от шумов.
- - - Добавлено - - -
Надо посмотреть название обязательно)
- - - Добавлено - - -
Очень интересная динамика.
Очевидно, что когда состояние входов пограничное, любой перекрестный чих может иметь какое-то влияние. В данном случае, видно, что влияет содержимое регистра HL. Чем ближе к правому краю байта, тем разреженней шум. И чем ближе к правому краю экрана, тем тоже шум разреженней.
Та же картина видна с битом 5 (средняя треть экрана).
Изменю тест, переставлю местами маски, чтобы понять, какие еще перекрестные помехи влияют.
- - - Добавлено - - -
Добавил тест 4.
По сути это тот же тест 1, но изменен порядок полос.
ну да, а другой проц ставлю - сразу и питание улучшается, и шумы пропадают )) АТХ-БП
Разбирать Профи-к не самое благодарное дело. Посмотрел процессор - Z8400AB1 Z80ACPU 29038
Это точно NMOS
А, ну и мануфактура ST
тест4
https://s1.hostingkartinok.com/uploa...ed89ee51ff.jpg
Дело не в улучшается/ухудшается. Дело в сдвиге порога срабатывания. Твой процессор не глючный, просто его порог 0/1 затворов транзисторов находится именно в той зоне, в какой образуются средние состояния при сложении сигналов с шин LBUS/HBUS. Причем, при данном напряжении питания. Если поставишь в другой компьютер, где другие условия, вполне возможно, что картина теста будет совсем иной.
- - - Добавлено - - -
Понял, значит хоть результат в какой-то мере зависит от состояния HL, но основная зависимость окружения, похоже, от комбинаций других линий на LBUS. Значит надо сделать более подробный тест для твоего процессора. Ну и вообще.
- - - Добавлено - - -
Сделал подробные варианты тестов.
В них каждой из 65536 комбинаций начальных значений AF соответствует лишь одна точка на экране.
Т.к. рабочая зона экрана охватывает лишь 16384 точки для бита 3 и бита 5, пришлось тест разделить на 4 части (5, 6, 7, 8).
Скорее всего все 4 теста будут показывать одинаковую картинку, но если она все же немного отличается, то это тоже важно.
Обязательна запись на видео, т.к. в иных местах может телепаться лишь 1 пиксель.
- - - Добавлено - - -
Как определил, что NMOS?
Ходил по ссылкам которые на прошлой странице выкладывали, наткнулся на это:
https://floooh.github.io/visualz80remix/
Подскажите, что это за эмулятор - это отреверсили схему и уже эмулятор к ней сделали?
https://i.imgur.com/5IDokbf.jpeg
Первый прогон в кислоте Toshiba T84C00AM-5.
Датасеты: https://drive.google.com/drive/folde...eoE-OqmpvBYRzj
Выяснилось что декодер и некоторые "нестандартные ячейки" с имплантацией.
Борис выложил более качественные фото старой ревизии T84C с фокус-стакингом: https://ic.onidev.fr/map/toshiba/T6A...4C00-CORE.html
Товарищ Titus, пожалуйста, прочтите это:
https://github.com/hoglet67/Z80Decod...-SCF-Behaviour
https://github.com/redcode/Z80_XCF_Flavor/issues/2
YF и XF нестабильны в инструкциях CCF/SCF, вероятно, по тем причинам, которые вы теоретизировали.
Насколько нам удалось выяснить:
1. все модели Zilog NMOS и CMOS ведут себя так, как описал Патрик Рак, за исключением Z0840004PSC, где мы увидели, что некоторые устройства ведут себя как NMOS NEC.
2. NEC NMOS копируют YF и XF из A.
3. Модели NEC CMOS ведут себя по-разному.
4. По крайней мере, некоторые модели ST CMOS (не старые NMOS от SGS или SGS-Thomson, а модели ST CMOS от STMicroelectronics) ведут себя иначе, чем Zilog и NEC.
Не исключено, что есть и другие варианты поведения, которые пока не обнаружены. Скорость процессора напрямую и явно влияет на стабильность YF и XF в этих двух инструкциях.
Видео надо. Но и картинки тоже.
Говорить словами, что было в тесте - это просто кощунство)
- - - Добавлено - - -
Судя по уже проведенным новым тестам, именно по этим причинам.
- - - Добавлено - - -
В случае, когда среднее значение на линиях близко к порогу срабатыванию затворов транзисторов, на результат может влиять все, что угодно, и скорость, разумеется тоже. Хотя бы потому, что от нее зависит длительность такта, а, следовательно, время за которое заряжаются/разряжаются затворы.
- - - Добавлено - - -
Я думаю, что-то интересное прояснится в новых тестах, если найдутся желающие их проводить на реалах.
- - - Добавлено - - -
С имплантацией - это как?
- - - Добавлено - - -
Посмотрел по схеме, какие еще команды влияют на флаги, но при этом не используют стандартные механизмы чтения/записи регистра источника/приемника через шины. Думаю, что эти команды надо будет рассмотреть внимательнее в плане формирования флагов 5 и 3.
Вот список:
SCF/CCF (с ними все понятно)
BIT
ADD/ADC/SBC HL,dd
LDI/LDD/LDIR/LDDR
CPI/CPD/CPIR/CPDR
INI/OUTI/IND/OUTD
INIR/OTIR/INDR/OTDR
https://drive.google.com/file/d/1bHD...ew?usp=sharing
говорю словами - сперва запускается 5й тест, потом 6-7 и далее со всеми остановками.
p.s. Делай тогда все тесты с запуском c #9000h. Хотя с 8000h было бы интереснее, но пусть как будет, чтобы добавлять леХХче мне..