Принцип работы синхрогенератора Profi 3.2 и Profi 4.xx
В описании принципа работы синхрогенератора будет рассматриваться оригинальная прошивка SAMX6.
По схеме электрической принципиальной один адрес синхрогенератора равен 8 тактам Z80.
Побитное описание сигналов синхрогенератора:
D0 – синхросмесь через XOR строчных и кадровых импульсов SYNC;
D1 – сигнал гашения BLANK (1-изображение выводится, 0-изображение не выводится);
D2 – сигнал рамки FLD1 (1-рамка, 0-бордюр);
D3 – сигнал прерывания INT (1-не активен, переход по заднему фронту («1->0»)-активен);
D4 – сигнал кадровой развертки SYNK (0-не активен, 1-активен);
D5 – сигнал сброса счетчиков старших 5-ти бит адреса A5-A9 ПЗУ 27С16 (573РФ2/РФ5) (0-не активен, 1-активен);
D6 – сигнал записи FF в счетчики младшего адреса, из которых используется только 5-ть бит (DA1-DA5) для формирования младшего адреса ПЗУ синхрогенератора (A0-A4);
D7 – сигнал увеличения счетчиков старших 5-ти бит адреса A5-A9 ПЗУ (0 или 1-не активен, «0->1»-активен);
После включения, состояние адресных счетчиков не определено (во всяком случае верхних 5-ти бит) и может иметь любые значения, но формирование изображения начинается с «пересечения» кадрового и строчного импульса — это адрес 1F4h. Напомним, что изображение строится слева на право и сверху вниз.
Итак, счетчики адреса попали в область кадрового импульса (1E0h-1FFh), c байта по адресу 1F4h начинается формироваться изображение. Кроме кадровой и строчной разверток (SYNC), в этой области используются такие сигналы BLANK=0 (изображение не выводится), FLD1(выключен сигнал рамки), не активен INT, активен D4 (SYNK) – это первая строка изображения.В этой области прошивки так же активны сигналы счетчиков:
D6 – определяет длину строки в тактах (224 такта и будет пояснение далее)
D7 – увеличение на единицу счетчиков старшего адреса ПЗУ, по схеме включения используются DA10-DA14, DA6-DA9 используются для адресации и регенерации памяти. Это означает, что для того, чтобы увеличить старшие 5 бит адреса ПЗУ, необходимо 16 импульсов D7, т.е. область 1E0h-1FFh повторяется 16 раз и формирует 16 строк изображения. При переходе из 0 в 1 на адресе 1F6 (после 16 циклов) счетчики старшего адреса переходят на адрес 216h.
В области 200h-21Fh формируется сигнал прерывания INT, эта область повторяется 8 раз, т.к. D7 в этой области два раза переходит в 0 и соответственно формирует +8 строк изображения. Видимо поэтому тесты показывают короткий INT, т.к. длина его всего 16 циклов. Далее переходим в область — 220h-23Fh.
В области 220h-23Fh формируются 16 строк перед верхним бордюром, они невидимы, т.к. всё еще активен сигнал BLANK. Далее переходим в область — 240h-25Fh.
В области 240h-25Fh формируются первые 16 строк верхнего бордюра (1-16).
В области 260h-27Fh формируются вторые 16 строк верхнего бордюра (17-32).Далее переходим в область 280h-29Fh. Всего 72 строки.
В области 280h-29Fh, а точнее на адресе 299h становится активным сигнал сброса счетчиков D5 ПЗУ синхрогенератора, который переводит верхние пять бит адреса в 0, что приводит к переходу в облаcть 00h-1Fh, а точнее на адрес 19h.
В области 00h-1Fh формируются первые 16 строк папера. Напомню, изображение формируется с лева на право после строчного импульса, вот от него мы отсчет и поведем! В прошивке это выглядит таким образом: 16 тактов строчный импульс + BLANK+FLD1 (14h-15h), дальше идет 32 такта невидимого левого бордюра (16h-19h), дальше 16 тактов видимого левого бордюра (1Ah-1Bh, + запись D6 значения FF в младших 5-ти бит), дальше 128 тактов папер (FLD1 в «1»), дальше 16 тактов видимого правого бордюра, и далее 16 тактов невидимого правого бордюра. Эта область как всегда повторяется 16 раз, потом происходит переход в область 20h-3Fh и т. д. до 160h-17Fh – здесь формируются последние строки папера (всего 16 циклов * 12 областей = 192 строки) и переход в область формирования первых 16 строк нижнего бордюра — 180h-19Fh.
В области 180h-19Fh формируются первые 16 строк нижнего бордюра (1-16).
В области 1A0h-1BFh формируются вторые 16 строк нижнего бордюра (17-32).
В области 1C0h-1DFh формируются третьи 16 невидимых строк нижнего бордюра (33-48). В конце кадра имеем 312 строк. Далее переходим к формированию следующего кадра.
Примерно так формируется изображение на Profi 3.2 и Profi 4.xx на оригинальной прошивке SAMX6.
Для наглядности текста можно использовать утилиту Profi_rom_viewer от Balu_dark для просмотра содержимого прошивки SAMX6 и пониманию процесса формирования изображения.
Прошивка под пентагон уже написана по вышенаписаному описанию и вот этому источнику, правда она еще не проверена. Для наглядности размещу здесь картинку с таймингами:
http://www.worldofspectrum.org/rusfaq/pent.gif
Сразу скажу, что были замечены не соответствия - т.к. каждый адрес в прошивке равен 8 тактам Z80, то видимый левый бордюр пентагона (36 тактов) и правый бордюр (28 тактов), сделать не получится, по понятным причинам (всё кратно 8), я пока сделал 32 левый и 32 правый. Еще один момент смущает - зачем кондоровцы сделали запись FF в младший адрес, а не 0, возможно чтобы учесть переходные процессы. Вобщем есть над чем поэкспериментировать. Результаты будут в ближайшее время.
Да! хочется отметить помощь zebest и Alexandr Makeev при разгребании дебрей прошивки! Спасибо Вам! :)
Ссылка на описание - https://www.dropbox.com/s/5rcfwowi8g...PROFI.zip?dl=0 .