Shaos wrote:Там любой из выходов может замыкаться обратно на матрицу как входной сигнал (при этом эта нога остаётся болтаться и снаружи микросхемы никуда не подцепляется), но можно и чисто как вход использовать некоторые выходы - там надо отключать эти выходные вентили от этих входов тогда (см. картинку ниже). Кулич вроде отписывался, что он сумел галку запустить с оригинальной полной прошивкой, адаптированной под WinCUPL - он там в зхпк писал про это и потом вспоминиал в дискорде у Алоне. Моя упрощённая прошивка на ХЛ8 не пошла видимо потому что там какой-то трюк с иголками наверное использовался и с галкой оно видимо повторилось т.к. прошивка была полная как в оригинальной ХЛ8...
В итоге проб и ошибок УДАЛОСЬ ЧАСТИЧНО сделать прошивку ХЛ8 под тайминги пентагона. А именно - 320 строк вместо 312 и 80 строк (вместо 64) бордюра до экрана (все при RG0=1 - все параметры, относящиеся к расширенным режимам я не тронул. Точнее трогал, но тогда "съезжала" адресация расположения букв в символьном режиме - она жёстко привязана к адресам счетчика ВНЕ прошивки ХЛки, и если там "съезжает" количество строк бордюра, съезжает и адрес вывода первой строки символов и далее, что выяснено опытным путём).
Далее получилось так, что той адренсации, что была подведена к ПЛМ, не хватало для пентагоновской развертки. Изначально сигналы V7 и V6 через элемент ИЛИ смешиваются и идут к ПЛМ уже в виде сигнала VV. А для адресации не 84, а 80 строк бордюра нужны РАЗДЕЛЬНЫЕ адреса V7 и V6.
В итоге я решил отогнуть две ноги у ПЛМ - одна нога (и так не идущая вовне) - ликвидировать "внутренний" сигнал Z1 (неиспользуемая нога 16(13) - здесь и далее нумерация ног дана для "широкой" микуросхемы DIP24, а рядом в скобках - для "узкой" DIP20) и использовать его для дополнительного сигнала V7, а вместо VV, который тоже надо отогнуть (нога 18(15)) - взять сигнал V6. Сигналы V6 и V7 берутся, соответственно, с платы - с D63.10 и D63.9 соответственно.
Плюс я убрал формирование сигнала Z (Z2 в исходниках), так как он в современных модификациях АТМ2+ просто ненужный рудимент. Таким образом, ногу с ним 14(11) тоже можно отогнуть.
Таким образом, планировалось, что всего с напайкой двух проводков можно будет получить пентагоновскую развертку. Правда, действительность оказалась чуть сложней -
Для формирования сигнала бордюра HE в новом варианте и для расширенной графики (RG0=0) и для ZX-графики (RG0=1) элементарно не хватило строчек в исходниках (т.е. вариантов комбинаций). Как было выяснено опытным путем при попытках компиляции, их может быть не более ВОСЬМИ, а по факту, не более СЕМИ, так как первая строчка ообычно предзадане -
HE CS - true
В итоге я снова перелопатил исходники - вернул сингал Z2, но сделал его внутренним (формируется внутри, но используется другими элементами как входящий), каким был ранее Z1.
Но так как Z2 висел ранее на выходе D7 (который вместе с D0 в отличие от сигналов D1-D6 не могут быть переориентированы на вход), я переместил его вместо сигнала бордюра HE (D5 - нога 17(14)), а
HE поменял на прежнее место
Z2 - ногу 14(11).
В этой конфигурации места хватило и новая прошивка скомпилировалась. И заставить ее работать можно при помощи ЧЕТЫРЁХ отогнутых ножек ПЛМ и ТРЁХ навесных проводов.
Два из них - ранее упомянутые синалы V6 и V7 (ноги 18(15) и 16(13)) идущие на D63.10 и D63.9 соответственно.
Далее отгибаем ногу 17(14) - ранее с нее шел сигнал бордюра HE, а теперь - ставший внутренним (и значит ненужный вовне) сигнал Z2.
И отгибаем ногу 14(11) - ранее это был сигнал Z2, а теперь - новый сигнал бордюра HE. Его мы ТРЕТЬИМ проводком припаивает туда, куда он должен идти от ПЛМки - к D14.14.
И получаем работающую ГОРИЗОНТАЛЬНУЮ (это важно для дальнейшего описания) развертку Пентагона в режиме ZX-экрана и кучу дёмок, просмотром мультиколоров которых можно наслаждаться. Например
OSCOSS, которая раньше вообще ругалась, что "у вас не Пентагон" и отказывалась запускаться. Перелопаченные исходники теперь выглядят так:
====================================
#include "cp7_1.dsc"
RG0 CS = false
V6 CS = false
V7 CS = false
VS CS = true
VS = v8 ~v7 v6
VS = ~v2 ~v3 ~v7 ~v6 ~v4 ~v5 ~v8
BL CS = true
BL = ~h4 ~h5 h6 rg0
BL = ~b3 ~b2 h4 ~h5 h6 rg0
BL = b3 ~h4 ~h5 h6 ~rg0
BL = ~b3 h4 ~h5 h6 ~rg0
BL = b3 ~b2 h4 ~h5 h6 ~rg0
BL = ~v6 ~v7 v4 v5 v8
BL = ~v6 ~v7 ~v4 ~v5 ~v8
HS CS = true
HS = ~h6
HS = ~b3 ~h4 ~h5 h6 ~rg0
HS = b3 ~h4 ~h5 h6 rg0
HS = h4 ~h5 h6
HS = h5 h6
Z2 CS = true
Z2 = ~rg0 ~v8 ~v7 ~v6 ~v5
Z2 = ~rg0 ~v8 ~v7 ~v6 v5 ~v4
Z2 = ~rg0 ~v8 ~v7 ~v6 v5 v4 ~v3
Z2 = ~rg0 v8 ~v7 ~v6
HE CS = true
HE = h4 h5 ~h6 rg0
HE = ~h5 h6
HE = rg0 ~v8 ~v7 ~v6
HE = rg0 ~v8 ~v7 v6 ~v5 ~v4
HE = rg0 v8 ~v7 ~v6 ~v5 v4
HE = rg0 v8 ~v7 ~v6 v5
HE = ~z2
//HE = ~v8 ~v7 ~v6 ~v5 ~v4 ~v3 v2 h6 ~h5 ~h4 b3 b2 rg0
====================================
И прилагаемый по "инклюду" файл
"cp7_1.dsc" с описанием ножек (там тоже есть изменения, так как мы поменяли местами Z2 и HE и заменили VV на V6 и Z1 на V7 -
====================================
// inputs
#define h6 1>
#define b2 2> // 2 input or 1 output
#define h5 3>
#define bl 4>2
#define h4 5>
#define hs 6>3
#define b3 7>
#define rg0 8>4
#define v4 9>
#define v6 10>5
#define v3 11>
#define z2 12>6
#define v2 13>
#define v7 14>7
#define v5 15>
#define v8 16>
// outputs
#define VS >1
#define BL >2
#define HS >3
#define RG0 >4
#define V6 >5
#define Z2 >6
#define V7 >7
#define HE >8
====================================
Жирным и подчеркнутым я выделил те места, которые нам понадобятся ниже.
Но вот позже, при тестировании на разных демках, оказалось, что совместимость, увы неполная, и неполная она в плане горизонтальной синхронизации.
Вот что показывает, например, демка
RAGE:
И тут для меня все оказалось гораздо сложней и запутанней и требуется помощь уважаемой аудитории.
Для начала прошу (кто не в курсе), ознакомиться с разбором оригинальной прошивки ПЛМ 1556ХЛ8 для АТМ2+от камрада
KALDYH вот тут:
https://zx-pk.ru/threads/8208-vopros-po ... page3.html
Конкретнее всего меня напрягла вот эта его фраза:
Для дальнейших расчётов надо учесть, что сигнал формирования бордюра дальнейшими регистрами задерживается на одно знакоместо (4 такта) плюс один пиксель.
Исходя из его рассчетов (еще раз параллельно смотрим его разбор по ссылке) и в Пентагоне, и в АТМ строка имеет одинаковую длину 224 такта, но немного отличается:
Пенгагон:
32 такта (каждый такт - 2 пикселя) - гашение, 36 тактов бордюр, 128 тактов ZX-экран, 28 тактов бордюр - а далее - сигнал строчной синхронизации.
АТМ:
40 тактов - гашение 24(+4=28) - бордюр, 128 тактов - ZX-экран, 32(-4=28) бордюр, а затем - строчная синхронизация (тоже до конца не понял, как она формируется в конце и понимает, что 224 такта прошли - а это важно для понимания всего процесса в целом).
В целом по сумме гашение+первый бордюр и в пентагоне и в АТМ = 68 тактов, но есть различие в длительности самих этих двух компонентов.
При этом измерения (буквально линейкой) показали, что бордюр перед ZX-экраном имеет размер в 7 знакомест (28 тактов!), а на скриншоте в демки RAGE видно, что горизонтальная рассинхронизация между Пентагоном и АТМ составляет ТРИ знакоместа, (т.е. разница в 12 тактов - как если бы у пентагона было бы 36 тактов бордюра, а у АТМ - уже не 24, а 28 тактов.
Т.е. формула "24+4" и в конце "32-4" играет новыми красками.
Сам KALDYH по ссылке на ZX-PK.RU пишет:
Референсные параметры экрана Пентагона (не помню откуда мной взято): 32 такта - импульс гашения по строкам, 36 тактов - бордюр от гашения до экрана, 128 тактов - экран, 28 тактов - бордюр до строчного синхроимпульса, в сумме 224 такта. У ATM, получается, так: 40 тактов - гашение, 28 (24+4 задержки) - бордюр до экрана, 128 - экран, 28 (32-4 задержки) - бордюр до импульса синхронизации. Отличия, как видим, минимальны, и касаются они только длительности гасящего импульса - у ATM он чуть длиннее.
При этом, если я правильно прочитал исходники, бордюр там все-таки выставлен на "24":
h6 - 32 такта, h5 - 16 тактов, h4 - 8 тактов, b3 - 4 такта, b2 - 2 такта
HE = h4 h5 ~h6 rg0 - xx011xxx = 24 (и до 39)
HE = ~h5 h6 - видимо, второй бордюр перед синхрой - xx10xxxx = 32 (и до 47)
Возникают сразу несколько вопросов по поводу того, как переделывать все "под пентагон":
1) сделать гашение 32 из 40, а бордюр синхронно увеличить с 24 до 32.
Тогда слева и в АТМ и в Пентагоне бордюр будет по 8 знакомест. Но вот в
RAGE останется разница в одно знакоместо.
2) Сделать гашение в АТМ 28, а бордюр 36 (а гашение уже не 32, а 28 соответствено). Тогда в АТМ слева от экрана бордюр будет иметь ширину 9 знакомест (против 8 у Пентагона), а вот в демке RAGE вертикальные черты будут совпадать (возможно расхождение в один пиксель, как писал KALDYH - но об этом далее).
Это приемлемо - теоретически, только в очень-очень редких случаях в отдельных мультиколорах (не бордюрных) по краям будут небольшие "мерцания" (как сейчас есть при текущих расхождениях в горихонтальной синхре). Но это, повторюсь, приемлемо.
Тут возникает куча других вопросов:
Вот берем коды сигнала гашения:
BL = ~h4 ~h5 h6 rg0 - xx100xxx = 32 (до 39)
BL = ~b3 ~b2 h4 ~h5 h6 rg0 - xx10100x = 40 (до 41)
Получается гашение, которое должно идти первые 40 тактов, идет только с 32 по 40 такт? Или я не прав? А что находится с 0 до 31 такт? Эти такты отданы на откуп сигналу строчной синхронизации, или я просто что-то не так понимаю? А если понимаю так, то получается, что если мы будем править гашение, значит надо вносить измененим и в исходники формирования сигнала строчной синхры, меняя ее длительность? Или я опять что-то не так понимаю? Например, если таким образом нашение станет короче синхры (28 против 32) - что будет?
Также, если мы будм делать не 24, а 28 тактов бордюра, то надо задействовать сигнал B2.
А тут уже совсем пока что для меня начинаются джунгли. Вроде бы бордюр должен останавливать отсчет адресов. Значит сингал B2 нельзя использовать? А значит строчная синхронизация в АТМ невозможна? Как будет "обрезаться" второй бордюр справа?
В общем, вопросы, вопросы...
Ну и опять возвращаемся к пресловутой задержке бордюра в "одно знакоместа (4 такта) и один пиксель). Я пока не вкурил
по схеме АТМ - где это и как (и какие именно счетчики останавливаются).
Большая просьба помочь со всем этим разобраться. Сейчас мы стоим В ОДНОМ ШАГЕ от того, чтобы АТМ получил полную (или почти полную) Пентагоновскую развертку. Надо дорасколоть этот орешек.
В приведенных мной исходниках жирным выделены те строчки, которые относятся к горизонтальной синхре, а подчеркнуты те, которые относятся к ZX-экрану и планируются к изменению.
P.S. И да. Просьба разъяснить это строчку в исходниках:
//HE = ~v8 ~v7 ~v6 ~v5 ~v4 ~v3 v2 h6 ~h5 ~h4 b3 b2 rg0
Это просто "закомментированный чертами // сингал HE, или наоборот - это инвертированный HE?
You do not have the required permissions to view the files attached to this post.