С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Упрощенное описание команд LDI(R)/LDD(R):
В такте M1.T4 сбрасываются флаги N и H.
В такте M2.T1 содержимое HL записывается в PCR и на шину адреса для чтения содержимого памяти по адресу (HL).
В такте M2.T3 инкрементированное (для LDI(R)) или декрементированное (для LDD(R)) содержимое PCR обратно записывается в регистр HL.
В такте М3.T1 содержимое DE записывается в PCR и на шину адреса для записи байта в память по адресу (DE).
В такте M3.T3 инкрементированное (для LDI(R)) или декрементированное (для LDD(R)) содержимое PCR обратно записывается в регистр DE.
В такте M3.T4 содержимое BC записывается в PCR. Если BC = 1, то флаг P=0, иначе флаг P=1. Если BC = 1 или команда LDI/D, то этот цикл является последним циклом команды.
В такте M3.T5 декрементированное содержимое PCR записывается обратно в регистр BC. Также в этом такте + 1 на шину HBUS выдается результат работы АЛУ. В нашем случае (точно пока не изучал) АЛУ должно было сложить содержимое регистра A и байта, который копировался из (HL) в (DE). Таким образом, 5 и 3 биты регистра флагов берутся из A + (HL).
В такте M4.T1 содержимое PC записывается в PCR.
В такте M4.T3 декрементированное содержимое PCR записывается обратно в PC и снова читается в PCR
В такте M4.T5 декрементированное содержимое PCR записывается обратно в PC.
Мои пять копеек. Нарисовать "транзисторную схему" - значит понять ВСЕ нюансы поведения схемы. Особенно если применить аналоговое моделирование (что то типа Verilog-AMS). Если рисовать сходу "логическую схему" - то потеряется ВСЯ информация об UB (неопределённое поведение). Посему можно добиться "правильного поведения" при "правильных входных воздействиях", но если создать "не штатную ситуацию" - "логическая схема" даст сбой в поведение (она не будет на все 100% совпадать с оригиналом.).
Задача сего топика - это полноценное вскрытие "чОрного ящика" для полноценного раскрытия оного UB.
ПС: а для целей создания сеги/несов итд это излишнее знание...
Оба правы. Давайте жить дружно. У каждого свои цели и способы (адекватные к задачам). Лично мне нравится способ ТС.
Titus(12.10.2024)
Товарищ @Vslav, который и заварил всю эту кашу с реверсами на форуме, делал вообще только транзисторную схему, а уже с нее Verilog-модель. И если что, сверялся только с транзисторной. Я так не могу, мне нужна транзисторная, как базис, и логическая, как удобная для быстрого анализа и оптимизации.
Заполнены разделы по клоковому гене и по интерфейсу с внешней шд.
https://github.com/emu-russia/SEGACh...T84C/clkgen.md
https://github.com/emu-russia/SEGACh...ain/T84C/db.md
(включая анализ падов)
Также подглядывая в NMOS Z80, сформировалось 2 подозрения (пока нет 100% уверенности):
- чип в Visual Z80 лежит вверх ногами
- сигнал clk в Visual Z80 на самом деле _clk (active-low), т.к. из того что я вижу у себя в регблоке - на время clk=0 производится подзарядка бит лайнов ячеек SRAM и регистры в этом время использовать нельзя ("команды" reg_load_xxx).
Такие картинки у нас показывал ув. М.Гамаев, где явно видно что reg_load_af активируется на clk=0, что мне очень подозрительно.
Titus(12.10.2024)
А в чем несостыковка? Внешний вход /CLK инверсный, затем внутри он инвертируется. Т.е. при внешнем CLK = 0 заряжаются лайны.
- - - Добавлено - - -
В смысле вверх ногами? Чип крутят так, как удобно, у него нет ни верха, ни низа) А то, что надписи на кристалле ориентированны в какую-то сторону, это еще ничего не значит.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)