PDA

Просмотр полной версии : Расширитель палитр для БК (упрощённая версия)



Sandro
12.03.2021, 18:56
Как все знают, с цветом на БК -- не очень. На десятке у нас либо бесцветный 512x256, на цветном мониторе превращающийся в чёрт знает что, либо 256x256x4 с RGB цветами в неправильном порядке. На 11М лучше, но не сильно.

Эта ситуация требует исправления. Давно уже требует, но почему-то никто не решился. :rolleyes:

Я лично порывался исправить положение дел ещё в далёком 1992 году, но тогда мне в руки попала IBM PC, и, увы, времени на БК стало не хватать. В пролом году я про это вспомнил, и даже кое-что написал на чёрный форум, но тогда всё заглохло. В том числе и из-за вопроса софта, который это всё будет поддерживать. Недавно я переосмыслил вопрос, и понял, как можно сделать упрощённую, но тем не менее более полезную версию. Возможности:

* Заменяются 3 цвета, чёрный остаётся чёрным
* 8 базовых цветов
* 512 базовых палитр
* Градиенты в 4 уровня яркости (включая чёрный)
* Программное переключение между режимами 256 и 512 точек на строку
* Совместимость с БК-0010 и БК-0011М (пока без поддержки штатных палитр)
* Совместимость с имеющимся ПО
* Обратная совместимость нового и адаптированного ПО с исходной машиной
* Модификация большинства игр без изменения размера и функциональности машинного представления
* Блок подключается к шине МПИ и нескольким точкам на плате
* Никаких модификаций самой БК не требуется

* Не более 15 ИС малой степени интеграции

Уже нарисовал тракт данных, вышло ровно 10 корпусов мелкоты. Ещё пара на управление -- и всё. Осталось свести всё на одном листе, разложить управление на вентили, и можно делать пробную разводку цифры.

Не факт, что это имеет смысл пускать в серию, но я всё же хочу довести проект до логического завершения.

Да, полная карта палитр вот: http://sandro.pdp-11.ru/palext/bkpals1k.png

Мнения?

svinka
12.03.2021, 19:02
* Блок подключается ... нескольким точкам на плате
* Никаких модификаций самой БК не требуется Противоречие

- - - Добавлено - - -


Модификация большинства игр без изменения размера и функциональности машинного представления
Вот с этого и начните в эмуляторе

Raydac
12.03.2021, 19:03
я правильно понял что идея - ввести программное переключение 256 на 512 и обратно и сделать возможность задать три цвета в палитре?

Sandro
12.03.2021, 19:11
Правильно.

- - - Добавлено - - -



Вот с этого и начните в эмуляторе

Уже начал :P

А подсоединиться к МПИ -- это не модификация. Иначе подключение контроллера дисковода -- это уже модификация.

Raydac
12.03.2021, 19:18
тогда еще неплохо предусмотреть блокировку намертво в выбранном состоянии как на порту 128го спека сделано имхо

mdk
12.03.2021, 22:01
* Блок подключается к шине МПИ и нескольким точкам на плате
А можно так, чтобы получить все эти возможности, вообще не открывая корпус БК? Блок вида МСТД, который вставляется в МПИ и у которого еще два разъема: один - вход сигнала ЧБ ТВ с БК, а второй - выход на монитор/ТВ. Все преобразования сигнала ТВ пусть происходят внутри блока. Это было бы самым приемлемым вариантом для пользователя БК, не владеющего искусством пайки.

Sandro
12.03.2021, 22:20
тогда еще неплохо предусмотреть блокировку намертво в выбранном состоянии как на порту 128го спека сделано имхо

Не очень понял. На БК-0010 расширитель просто всё время включен, если подключиться к его видеовыходу. По умолчанию после сброса стоит режим 256x256 4 оттенка серого, как наиболее универсальный, ну а дальше софт пусть выбирает, что там ему надо.

На 11М планируется сделать так: при записи в регистр палитр происходит переключение на соответствующую палитру 11М, при записи в регистр расширителя -- происходит переключение на расширитель. Это наиболее универсально.

Защита, на мой взгляд, лишена смысла. Это на Спектруме есть проблемы из-за того, что некоторые программисты полагаются на неполную дешифрацию адресов портов, особенно старшего байта. На БК такой проблемы нет, так как попытка писать куда попало приводит к ошибке шины и аварийному прерыванию. Поэтому никто никогда не лезет по неположенным адресам, разве что по ошибке.

- - - Добавлено - - -


А можно так, чтобы получить все эти возможности, вообще не открывая корпус БК? Блок вида МСТД, который вставляется в МПИ и у которого еще два разъема: один - вход сигнала ЧБ ТВ с БК, а второй - выход на монитор/ТВ. Все преобразования сигнала ТВ пусть происходят внутри блока. Это было бы самым приемлемым вариантом для пользователя БК, не владеющего искусством пайки.

1) Тогда нужно не только ЧБ, но и ЦТВ.
2) Не будет работать с 11М
3) Больше микросхем и россыпи.
4) Нельзя будет сделать некоторые вкусности.

CodeMaster
12.03.2021, 22:26
2) Не будет работать с 11М
Это плохо.

3) Больше микросхем и россыпи.
Смотря на сколько больше. Возможно? часть можно упаковать в PLD.

4) Нельзя будет сделать некоторые вкусности.
Смотря какие. Если вместо 512 палитр будет 16, думацо переживём.

mdk
17.03.2021, 03:34
А можно так, чтобы получить все эти возможности, вообще не открывая корпус БК? Блок вида МСТД, который вставляется в МПИ и у которого еще два разъема: один - вход сигнала ЧБ ТВ с БК, а второй - выход на монитор/ТВ. Все преобразования сигнала ТВ пусть происходят внутри блока. Это было бы самым приемлемым вариантом для пользователя БК, не владеющего искусством пайки.



1) Тогда нужно не только ЧБ, но и ЦТВ.
2) Не будет работать с 11М
3) Больше микросхем и россыпи.
4) Нельзя будет сделать некоторые вкусности.

Ну а если тогда брать и ЧБ, и ЦТВ, можно же будет использовать и с 11М? При отсутствии записи в регистр расширителя пропускать на монитор сигнал с ЦТВ.

Sandro
17.03.2021, 15:11
Ну а если тогда брать и ЧБ, и ЦТВ, можно же будет использовать и с 11М? При отсутствии записи в регистр расширителя пропускать на монитор сигнал с ЦТВ.

Но только если установлена палитра 0, иначе попробуй пойми, какая комбинация битов стоит на выходе сдвиговых регистров. Колхоз. :(

Ну, так можно сделать, но только от полной безысходности. Придётся править код для включения 0 палитры принудительно или будут кривые цвета. Хотя тогда в 1991/1992 я как раз и планировал вариант с цеплянием на внешние разъёмы, но речь шла о десятке. Там-то всё однозначно.

Посмотрим. В любом случае сначала буду делать встраиваемую версию для десятки, чтобы хоть что-то было доведённое до конца. А там разберёмся. Ну и в эмулятор добавлю, само собой.

MM
17.03.2021, 16:51
Если делать целиком внешний блок, на разъем МПИ - есть вероятность, что на СОЗУ с минимальным временем выборки может и заработает - т.е. опережать БКшную ВП1-037 на ~порядок, а лучше на полтора.
Еще можно рассмотреть ДП СОЗУ 8 бит 16 Кбайт 60 нс CY7C006 . Но с ДП СОЗУ есть один неприятный момент - оно 2-портовое, а не 2-матричное - т.е. одновременно читать и записывать одну и ту же ячейку не удасться. Но это можно преодолеть увеличением времени записи свыше времени чтения ( по соседнему порту ).

Sandro
18.03.2021, 16:52
Если делать целиком внешний блок, на разъем МПИ - есть вероятность, что на СОЗУ

Речь идёт о блоке палитр. Никакого ОЗУ, никакого видеоконтроллера. Просто расширенная обработка цвета. Аутентично на россыпи 1533 серии.

А так -- Макс же сооружает (соорудил) AZ, после него изобретать свой видеоконтроллер нет смысла, проще взять AZ и соорудить к нему прошивку, какую хочешь.

LeoN65816
18.03.2021, 17:28
т.е. одновременно читать и записывать одну и ту же ячейку не удасться.
Прекрасно читается и пишется (https://zx-pk.ru/threads/28423-dvukhportovaya-pamyat.html?p=1059211&viewfull=1#post1059211)!
А что это за "2-матричное" ОЗУ?

MM
18.03.2021, 20:17
Прекрасно читается и пишется!
Не вводите народ в заблуждение. Проверял лично - пока идет чтение, запись невозможна, по крайней мере для CY7C131.
https://zx-pk.ru/threads/32174-spetsialnyj-kalkulyator-na-n1806vm2-i-melkikh-is.html

mdk
24.03.2021, 23:17
В соседней теме шла речь о палитрах:

Конкретно в БК-0010 сделано так: параллельно стоят два 8-битных сдвиговых регистра, один из которых содержит чётные, а второй -- нечётные биты слова. Они оба сдвигаются вправо с частотой 6МГц. Младшие два бита определяют цвет одной точки на "цветном" выходе, либо яркость двух точек на чёрно-белом через мультиплексор, управляемый фазой частоты 6 МГц.

Дополнительно, в 11М "цветной" двухбитовый код используется как часть адреса ПЗУ палитр. Кстати, в ПЗУ использована только четверть ёмкости, остальное забито нулями.

Реализация обсуждаемого расширителя палитр предполагает использование подмены упомянутой в цитате ПЗУ палитр на другую ПЗУ с другими значениями?

Sandro
25.03.2021, 08:04
В соседней теме шла речь о палитрах:
Реализация обсуждаемого расширителя палитр предполагает использование подмены упомянутой в цитате ПЗУ палитр на другую ПЗУ с другими значениями?

Разумеется, нет. Об этом же только что было сказано. Палитра хранится в регистре и может быть изменена в любой момент. В случае последней, упрощённой, редакции используется 10 бит, этого хватает на 1024 палитры.
Кстати, надо бы перезалить картинку, там тёмные цвета вышли слишком тёмными (25% яркости вместо 33%, это неправильно).

Хотя вначале я рассматривал вариант с перешивкой ПЗУ. Дело в том, что если ограничиться 3 цветами из RGB палитры (7 цветов, чёрный и так будет) и выкинуть дубликаты, то у нас остаётся всего 7 * 6 * 5 / 3! = 35 палитр. Из которых 10 уже и так есть в таблице палитр 11М (палитры 0..4 и 11..15). То есть, мы занимаем в расширенном ПЗУ еще 25 мест под палитры, остаётся 64 - 16 -25 = 23 свободных места для прочих развлечений.
Ну, или выкинув из новых палитр малополезный фиолетовый мы ужимаемся до 32 () штук и остаток используем для режима 512 символов. Бюджет всех шести разрядов адреса тогда выходит такой:

Всего RGB палитр: 6 * 5 *4 / 3! = 20; из них 7 уже есть (0, 3, 11..15), новых 13. Остаётся 5. Выкидываем фиолетовый и синий (синий на чёрном -- это жесть, "видно, что ничего не видно").

Старые палитры - коды ?0xxxx, ? игнорируется
Новые 4 цвета - коды ?1yyyy, y < 27.
Новые 2 цвета (512 точек) - коды c1zzzz, zzzz >= 27, c - частота 6 МГц для выборки нужного пикселя.

Правка минимальная -- отрезать один из CS у имеющейся 556РТ4 и кинуть на +5В через резистор, там прямо рядом есть куда (R42); вторым этажом вешаем новую, МГТФ на 6МГц, где-то соорудить защёлку на 1 бит расширенного адреса палитры, да и всё.

Некоторое время я и собирался так сделать, но меня останавливали два момента:
1) Десятку всё равно придётся сильнее модифицировать -- нужно будет делать платку с ПЗУ, схемой выборки и видеовыходом.
2) Нет режима 4 оттенка серого, а очень хочется.

По некоторому размышлению, я пришёл к тому варианту, что есть сейчас. Схему и, возможно, разводку ПП выложу, когда ещё и на это время найдётся.