Растактовка записи в регистр планов 1 и 2
Набросал растактовку записи в регистр планов 1&2 для ХМ1-032.
Все нарисовано и описано чисто теоретически, глядя на отреверсенную схему, без моделирования.
https://pic.maxiol.com/images2/15955...151951582..png
Описание:
Наименоваия сигналов:
CLC1 - тактовый сигнал 6.25МГц (F1), он же тактовый сигнал CLCI для PPU (ПП)
CLC2 - тактовый сигнал 6.25МГц (F2), повторяет CLC1 со смещением на 1/4 такта.
PCLC - тактовый сигнал 12.5МГц (Pixel clock), получаемый из CLC1 и CLC2 внутри большинства чипов. Также является тактовым сигналом видеоконтроллера (ХМ1-136). Один такт PCLC соответствует одной точке экрана в разрешении 640. В дальнейшем тактовым сигналом будет называться именно PCLC.
PS - сигнал арбитра доступа к памяти PPU. Генерируется видеоконтроллером (сигнал PSG). Низкий уровень устанавливается во время точек 1, 2, 3, 4. В этой фазе шиной ВОЗУ владеет PPU. Высокий уровень устанавливается во время точек 5, 6, 7, 0. В этой фазе шина ВОЗУ свободна, и может использоваться для передачи данных между ХМ1-032 и ХМ1-136. Наружу сигнал выводится в инверсном виде (/PSG).
CLCA - сигнал арбитра PS со смещением на 1 такт. Каждый цикл начинается с низкого уровня.
ACT_WRITE - устанавливается по фронту записи в регистр планов. Сбрасывает по CLCA2_F1 (фаза завершения).
CLCA2_F0 - фаза F0. Запись данных на шины D0..D7 и A0..A7. Активна весь цикл CLCA.
CLCA2_F1 - фаза F1. Завершение. Активируется по завершению цикла CLCA.
RQ - сигнал запроса обмена с видеоконтроллером. Повторяет CLCA2_F0. Наружу выведен в инверсном виде (/RQ).
CC0 - сигнал запроса записи в планы 1 и 2. Повторяет ACT_WRITE. Наружу выведен в инверсном виде (/CC0).
Описание работы:
Запись в регистр планов 1&2 (PLANE12, адрес 177014) начинается по переднему фронту DOUT. Одновременно с этим устанавливается сигнал подтверждения записи RPLY. Таким образом, запись в регистр планов имеет для процессора нулевую задержку. Одновременно с этим устанавливается сигнал CC0. Также во время активного DOUT данные с шины AD защелкиваются в регистре PLANE1_DATA (младший байт), и регистре PLANE2_DATA (старший байт). Если происходит байтовая запись (активен WTBT), то при записи по четному адресу, блокируется запись в регистр PLANE2_DATA, а при записи по нечетному адресу блокируется запись в регистр PLANE1_DATA. Это означает, что в случае байтовой записи, незадействованная часть регистра планов сохраняет свое предыдущее значение.
По отрицательному фронту CLCA (такт 4) устанавливается сигнал RQ.
По положительному фронту CLCA (такт 8) на шину A0..A7 выводится содержимое регистра PLANE2_DATA.
Через пол-такта (такт 8.5) на шину D0..D7 выводится содержимое регистра PLANE1_DATA. Задержка вывода на пол-такта, очевидно, снижает шум на шинах.
Еще через пол-такта по внутреннему сигналу видеоконтроллера A_D_LATCH (такты 9 и 10), содержимое шин A0..A7 и D0..D7 защелкивается видеоконтроллером с шин AG0..AG7 и DG0..DG7 в регистрах DC_H, и DC_L, соответственно.
И еще через один такт (такт 12) процесс завершается.
Шины A0..A7, D0..D7 освобождаются, сигналы RQ, CC0 переводятся в неактивное состояние.
- - - Добавлено - - -
Как видно из растактовки, циклы несколько отличаются от того, что описано в журнале ПК УКНЦ 1'95.
Растактовка записи в раритетный регистр
То, о чем 35 лет подряд мечтали миллионы УКНЦ'шников (в лице 5-10 особенно заинтересованных форумчан) свершилось! Загадка записи в раритетные регистры полностью разгадана!
1. Почему запись в раритетные регистры медленнее, чем запись в другие регистры?
2. Происходит ли хоть что-нибудь при записи в раритетные регистры?
Все это вы узнаете в этой серии расследования.
https://pic.maxiol.com/images2/15955...1951582.01.png
Наименоваия сигналов:
CLC_RARE_F0 - фаза F0. Запись данных на шины D0..D7 и A0..A7. Активна вторую половину цикл CLCA.
CLC_RARE_F1 - фаза F1. Завершение. Активируется по завершению цикла CLCA.
RQ, CC0, CC1 - сигналы обмена с видеоконтроллером.
Описание:
Запись в любой раритетный регистр (RARE_REG, адреса 177030..177057, за исключением регистров 177054 и 177055) начинается по переднему фронту DOUT.
По отрицательному фронту CLCA (такт 4) запускается тактовый автомат.
Во время низкого уровня CLCA (такты 4..7) ничего не происходит (шина находится в пользовании видеоконтроллера).
По положительному фронту CLCA (такт 8) на шину A0..A7 выводится и удерживается младший байт адреса раритетного регистра, защелкнутый в LATCH_ADR по сигналу SYNC. Причем, если запись была словная, то младший бит (A0) обнуляется.
Также устанавливаются сигналы RQ, CC0, CC1.
Через пол-такта (такт 8.5) на шину D0..D7 выводится и удерживается младший байт с шины данных (AD0..AD7).
По окончанию цикла CLCA (такт 12) выдается сигнал RLPY, а так же освобождаются шины A0..A7, D0..D7.
В ответ на сигнал RPLY, процессор снимает сигнал DOUT, после чего снимаются сигналы RQ, CC0, CC1.
Итак, ответы на животрепещущие вопросы:
1. Запись в раритетный регистр медленнее, чем запись в регистр планов из-за того, что сигнал RPLY выдается по окончанию цикла CLCA, что продлевает цикл записи на 2..5 тактов процессора, в зависимости от момента наступления цикла CLCA. Данная задержка выставления сигнала RPLY сделана потому, что при записи в раритетный регистр не предусмотрена буферизация в промежуточном регистре, поэтому данные на шине AD должны удерживаться до окончания цикла передачи данных в видеоконтроллер (CLCA).
2. В видеоконтроллере ХМ1-136 (в отличие от раритетного ХМ1-033) функция записи в раритетный регистр никак не реализована, поэтому на цикл RQ=1, CC0=1, CC1=1 он никак не отвечает.
- - - Добавлено - - -
Я думаю, что комбинацию сигналов RQ, CC0, CC1 можно расшифровать, как Request (о чем всем и так понятно) и Command_Code_0 и Command_Code_1.