PDA

Просмотр полной версии : Идеи для расширения системы цветности у ПК Специалист



CityAceE
05.04.2025, 21:55
В блоке "8-цветный генератор" данные цвета должны или записываться в инверсном виде , или инвертироваться после чтения .
Кстати, по поводу блока генератора цвета! Я не раз читал, что автор сэкономил всего лишь одну микросхему и не дал возможность читать цвет пикселя. А это капец, как осложняет программирование, потому что приходится где-то в другом месте постоянно хранить где и что какого цвета, вместо того, чтобы получать эту информацию напрямую из экрана! Может быть в новом клоне стоит добавить эту несчастную микросхему? Как мне видится, никаких конфликтов со старым ПО быть не должно.

SYR-ALEX
05.04.2025, 22:29
В Специалист "Краматорский" реализовано чтение цвета . Защёлка и мелкая логика . В любом случае минимум 2 корпуса . Я прорабатывал этот вопрос . Кроме защёлки с обвязкой необходимо выделить адрес порту с которого будет читаться значение цвета .

CityAceE
06.04.2025, 08:07
Кроме защёлки с обвязкой необходимо выделить адрес порту с которого будет читаться значение цвета .
А нельзя ли считывать цвет с того же порта, на который этот код цвета записывается для окрашивания пикселя?
А как организовано чтение цвета в Краматорском варианте Специалиста? Так задан какой-то другой порт? Какой?

Serg6845
06.04.2025, 11:23
А нельзя ли считывать цвет с того же порта, на который этот код цвета записывается для окрашивания пикселя?


можно, но прочитается код последнего установленного цвета. технически наверно можно и цвет конкретного байта читать, но там же ВВ55 - его перепрограммировать для этого придется, не факт что оверхед на и так не слишком быстром процессоре будет того стоить.
я в свое время вообще делал цвет как в Спектруме - просто поставил ОЗУ цвета шириной 8 бит (но пришлось отдельный порт на это выделить) - и там можно было подменить для процессора зкранное ОЗУ на ОЗУ цвета и напрямую читать/писать его. ничего сложного, но опять вопрос с адресацией (особенно с принятой в стандарте концепцией выделять по 2к на устройство которому нужно 4 байта)

CityAceE
06.04.2025, 11:46
но там же ВВ55 - его перепрограммировать для этого придется
Точно, не учёл этот момент! Тогда прямо весьма печальная ситуация получается.


я в свое время вообще делал цвет как в Спектруме - просто поставил ОЗУ цвета шириной 8 бит
Интересный подход, но, это уже не совсем Специалист получается. Основная идея, чтобы всё работало в точности, как сейчас, но при этом чтобы была возможность узнавать цвет конкретного пикселя (байта).

SYR-ALEX
06.04.2025, 13:30
Текущая тема про "Предлагаемые упрощения для «Специалиста-М»" . На верное не уместно тут обсуждать такие глобалиные доработки .
Моё мнение - без расширения ОЗУ модернизировать цвет нет особой выгоды .

Mick
06.04.2025, 17:15
Интересный подход, но, это уже не совсем Специалист получается. Основная идея, чтобы всё работало в точности, как сейчас, но при этом чтобы была возможность узнавать цвет конкретного пикселя (байта).

Кстати, если я не ошибаюсь, то у Специалиста вроде строение экрана как у Ориона, то расширение цвета как вариант можно сделать такой же - некий кроссовер

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


На верное не уместно тут обсуждать такие глобалиные доработки .
Моё мнение - без расширения ОЗУ модернизировать цвет нет особой выгоды .

В принципе логично, автору темы наверняка это не сильно интересно

CityAceE
06.04.2025, 17:36
На верное не уместно тут обсуждать такие глобалиные доработки .
Да, согласен! Обсуждение цветности вынес в отдельную тему.


Кстати, если я не ошибаюсь, то у Специалиста вроде строение экрана как у Ориона, то расширение цвета как вариант можно сделать такой же - некий кроссовер
Наверное, тогда уж более законно будет перенести систему цветности со Специалиста МХ. Там 8 цветов с двумя градациями яркости (включая чёрный), как у Спектрума. Два цвета на 8 горизонтальных точек.
Но я близко с ней не знаком (как там всё организовано?, можно ли считывать цвет?). Я лишь Batty адаптировал под такой экран. Игра визуально не отличается от Спектрума.

http://www.xn----7sbombne2agmgm0c.xn--p1ai/schemes/ColorController2.png

Вот для примера картинки под графику Специалиста MX:
https://pic.maxiol.com/images2/1743950581.3253325592.2cjlw69z.png https://pic.maxiol.com/images2/1743950905.780858384.8f0o007q.png

fifan
06.04.2025, 20:09
Та же схема под режим МХ в Сябре сделана проще.

lexarr
06.04.2025, 20:24
Связанная тема:
Расширение цвета и ОЗУ Специалиста (https://zx-pk.ru/threads/27577-rasshirenie-tsveta-i-ozu-spetsialista.html)

Mick
06.04.2025, 20:59
Наверное, тогда уж более законно будет перенести систему цветности со Специалиста МХ. Там 8 цветов с двумя градациями яркости (включая чёрный), как у Спектрума. Два цвета на 8 горизонтальных точек.
Но я близко с ней не знаком (как там всё организовано?, можно ли считывать цвет?).

Судя по приведенной схеме, считывать цвет похоже нельзя, только на запись.

CityAceE
07.04.2025, 11:10
Очевидно, что всякие ухищрения для чтения цвета пикселя не будут иметь толка, если всё это будет громоздко и медленно. У Специалиста и так медленный процессор, и при этом огромный массив экранного ОЗУ. При таком раскладе ни о каких цветных скролингах даже и думать не стоит!

Единственный приемлемый вариант, на мой взгляд, это каким-то образом иметь прямой доступ к памяти, которая хранит информацию о цветах. Я не знаю, как делать правильно, но, например, можно было бы подменять 12 килобайт видеоОЗУ 12-ю килобайтами ОЗУ, которое хранит информацию о цвете. Таким образом, понадобится только один раз рассчитать адрес для интересующей точки, чтобы понять включена она или нет, и после некоего переключения по тому же адресу можно будет узнать и её цвет. При этом у нас будет 4-х битный цвет.

Было бы ещё круто, чтобы можно было для этих 4-х бит палитру менять. И самое крутое, если бы можно было использовать 16 градаций серого даже на цветом мониторе:
https://pic.maxiol.com/images2/1744013317.780858384.24st986u.png

Данная картинка имеет стандартное разрешение 384*256, а каждые 8 горизонтальных пикселей имеют только две градации серого из 16-ти, то есть 4-х битная кодировка. 8 пикселей соответствуют одному байту цвета.

Serg6845
07.04.2025, 12:19
Единственный приемлемый вариант на мой взгляд, это каким-то образом иметь прямой доступ к памяти, которая хранит информацию о цветах. Я не знаю, как делать правильно, но, например, можно было бы подменять 12 килобайт видеоОЗУ 12-ю килобайтами ОЗУ, которое хранит информацию о цвете. Таким образом понадобится только один раз рассчитать адрес для интересующей точки чтобы понять включена она или нет и после некоего переключения по тому же адресу можно будет узнать и её цвет. При этом у нас будет 4-х битный цвет.

идея с защелкой выглядит более легкой в смысле программирования. читаем нужную ячейку экранном памяти - при этом в защелке аппаратно запоминается код цвета от этой ячейки. если нужно - можно его оттуда прочитать. в случае с подменой страницы - нужно переключить страницу, прочитать цвет, переключить страницу обратно.


Было бы ещё круто, чтобы можно было для этих 4-х бит палитру менять. И самое крутое, если бы можно было использовать 16 градаций серого даже на цветом мониторе:


в одной из своих поделок я использовал микросхему RAMDAC от древней VGA карты :)
здесь придется городить что-то подобное, хоть и в упрощенном виде

CityAceE
07.04.2025, 12:31
идея с защелкой выглядит более легкой в смысле программирования. читаем нужную ячейку экранном памяти - при этом в защелке аппаратно запоминается код цвета от этой ячейки. если нужно - можно его оттуда прочитать. в случае с подменой страницы - нужно переключить страницу, прочитать цвет, переключить страницу обратно.
Так-то да, но двигать цветной спрайт и отслеживать фон под ним будет сложнее. Самым быстрым, опять же но мой дилетантской взгляд, вариантом выглядит то, как организовано на Спектруме - пиксели и цвета живут своей независимой жизнью.

Serg6845
07.04.2025, 15:06
Самым быстрым, опять же но мой дилетантской взгляд, вариантом выглядит то, как организовано на Спектруме - пиксели и цвета живут своей независимой жизнью.

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

andrews
07.04.2025, 17:13
Если это делается для FPGA и в нем достаточно места, то почему не поставить для обслуживания графической памяти что-то еще? Совместимый софт останется двухцветным.

CityAceE
07.04.2025, 17:51
Если это делается для FPGA и в нем достаточно места, то почему не поставить для обслуживания графической памяти что-то еще?
Потому что теплится надежда в итоге получить это не только для некоего теоретического компьютера, реализованного в эмуляторе и FPGA, но и для реализации в железе на мелкой логике.

Lethargeek
07.04.2025, 18:29
Было бы ещё круто, чтобы можно было для этих 4-х бит палитру менять. И самое крутое, если бы можно было использовать 16 градаций серого даже на цветом мониторе:
а четвёртый бит используется вообще? цветов-то по описаниям всего восемь
мб можно приспособить четвёртый под флаг палитры - с выбором одной из восьми

SYR-ALEX
07.04.2025, 19:11
В "Эрике" реализован 4-х цветный режим с палитрой в 256 цветов . И память расширена , в 2-х вариантах . Автрский и наш 4 окна по 16к , видео ОЗУ можно убрать в "тень" ,а страницы миксовать в произвольном порядке . Также я сделал поддержку 8-и цвета .
Если немного напрячься то можно сделать плату расширения памяти 4 по 16к и цвета как в МХ или ОРИОН для существующих компов .

ivagor
07.04.2025, 21:27
с палитрой в 256 цветов
Значений порта палитры 256, но резисторы R30-32, R34-35, R37-39 одинаковые, поэтому оттенков красного 3 (не 4), оттенков синего и зеленого по 4 (не по 8). Итого 3*4*4=48 цветов. На практике у резисторов конечно есть погрешности, поэтому мелких оттенков будет >48, но вряд ли на них можно ориентироваться, т.к. эти вариации очень маленькие и уникальные от экземпляра к экземпляру, а "базовых" все же 48.

andrews
07.04.2025, 21:56
у резисторов конечно есть погрешности
есть резисторы с разными погрешностями и минимальными паразитными индуктивностями

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


но и для реализации в железе на мелкой логике
это усложняет печатную плату...хотя при удачной компоновке можно ее разбить на узлы и с помощью шелкографии сделать "информативной" в связке с удачной документацией на плату.

CityAceE
08.04.2025, 13:55
Вижу, что за всю историю отдельные энтузиасты предложили и даже реализовали в железе различные варианты расширения, как разрешения экрана, так и цветности. Но по понятным причинам ни один из вариантов не взлетел, потому что все эти доработки были предложены, когда платформа уже была либо при смерти, либо окончательно мертва. Никто, кроме авторов доработок, не поддержал расширения каким-то своими небольшими программками и в народ они не пошли, либо пошли, но не дошли.

На мой взгляд, чтобы доработка хоть как-то состоялась, на сегодня нужно соблюдение двух условий:
1. Поддержка этой доработки в эмуляторе.
2. Простая реализация в железе. Самое простое - реализация на недорогой FPGA-плате типа Tang Nano.

Ну и самое главное, программная поддержка. Но её не будет, до тех пор? пока доработка не будет воплощена хотя бы в эмуляторе.

Но я почти уверен, что оба пункта вполне реализуемы:
Pyk активно работает над своим Emu80, и очень надеюсь, что не откажет допились свой эмулятор.
RW9UAO сейчас довольно активно пилит свою реализацию Специалиста для FPGA, попутно ставя разные эксперименты (например, подключил General Sound)

Наверное, я бы мог как-то с программной точки зрения это поддержать. Во всяком случае интерес у меня есть.

Но пока что нет понимания, как именно расширить цвет на Специалисте, чтобы не потерять совместимость, добавить цветов и чтобы программировать это было максимально удобно и быстро.

andrews
08.04.2025, 14:54
Имхо в Бейсике должно быть поддержано, или в библиотеке для ассемблеров или примеры опубликованы.

Эмулятор конечно тоже хорошо. Но нет OpenSource-ных или хотя бы для отдельных компов перепрограммируемых(быть может с помощью конфигурационных файлов). У авторов эмуляторов не всегда руки доходят до внесения изменений. И получается, что "плодотворные идеи" повисают в воздухе и со временем исчезают.

Применительно к компам слово "мёртвые" неправильно. Вот КРАМ -мёртвый комп, потому что документации не сохранилось практически никакой. Я легко мог сохранить, но не сохранил. У меня на работе было помещение 18 квадратов с потолками 4.20, а домашняя квартирка маленькая. Так что не повезло КРАМу. А сканер был только ручной. Но самое главное его разработчики не отдавали юзерам документацию в электронном виде. Хотя за 60 тыс. с лишним советских рублей могли бы и дать.

Так что правило простое. Хотите, чтобы ваш комп не сгинул - озаботьтесь распространением документации на него максимально подробной и в электронном виде.

Pyk
08.04.2025, 23:53
@Pyk активно работает над своим Emu80, и очень надеюсь, что не откажет допились свой эмулятор.
Скорее всего с этим проблем не будет, не думаю, что доработка окажется очень сложной.


Эмулятор конечно тоже хорошо. Но нет OpenSource-ных
Как это нет?

SYR-ALEX
13.04.2025, 22:19
Если в вашем компьютере уже сделаны доробтки до 8-и цветов (https://www.специалист-пк.рф/schemes/ColorController1.png) , то логично доработать его до 16-и цветов. 16 цветов уже есть в Специалист МХ (https://www.xn----7sbombne2agmgm0c.xn--p1ai/index8.html) , Специалист МХ2 (https://www.xn----7sbombne2agmgm0c.xn--p1ai/index21.html) , Сябр (https://www.xn----7sbombne2agmgm0c.xn--p1ai/index35.html) в маперах МХ и МХ2 , Краматорский (https://www.xn----7sbombne2agmgm0c.xn--p1ai/index16.html) (третий внизу страницы) , Эрик (https://www.xn----7sbombne2agmgm0c.xn--p1ai/index25.html) - хоть и 4-х цветный но с палитрой . Может ещё в какихто других неизвестных мне . Краматорский давольно интересный клон кроме возможности использовать всю память в 64 кБайт, переключая старшие 16 кБайт ОЗУ в младшие, ещё цветной, и есть возможность чтения из памяти цвета , схема (https://www.xn----7sbombne2agmgm0c.xn--p1ai/schemes/Specialist-K.pdf). Чтение и запись цвета пройсходит автоматически при обращении к видео озу. 16-и цветный режим отличается от МХ и МХ2 и читать озу цвета они не могут , как и стандартный Специалист .
Следующий логичный шаг доработать чтение из ОЗУ цвета по подобию Краматорского .Может кто предложит свой вариант .
Существующие схемы цвета дают 2(чб) , 4 , 8 или 16 цветов на экране одновременно . Увеличить количество одновременно отображаемых цветов до 64 , не наращивая память , можно использовав ZX Spectrum 64 Colour RGB (https://scratchpad.fandom.com/wiki/ZX_Spectrum_64_Colour_RGB_Mode?oldid=1734017) или ULAplus (https://zxdesign.itch.io/ulaplus) . В сети встречаются описания стандартов ULAplus , а из схем нашол только это (https://zx-pk.ru/threads/16312-leningrad-2010-sborka-naladka-rasshirenie.html?p=1207153&viewfull=1#post1207153) . Адаптировать это к Специалисту в совокупности с чтением цвета , думаю даст хороший результат для графики.
И довно уже руки чешутся расширить ОЗУ и ПЗУ до 64кб ++ . Всё адресное пространство разделить на 4 окна по 16 кб , так чтобы можно было любую страницу ОЗУ или ПЗУ , вставить в любое окно . Так можно будет видео память и ПЗУ убирать в "тень" и получить сплошное ОЗУ.
Что думаете ?

SYR-ALEX
19.04.2025, 22:24
Набросал сборник схемок (https://drive.google.com/file/d/1BYQzO4TfOuyImuqYnLm-lU3yADoglCqB/view?usp=sharing) для расширения возможностей стандартного Специалиста .
Содержит наброски схем без привязки к конкретным клонам .
Узел чтения ОЗУ цвета для одного экрана или для 4-х. Узел записи в ОЗУ цвета переключаемый: STD 5 или 8 цветов , MX 16 цветов . Узел формирования RGBI сигналов . Узел обмена верхних четвертей ОЗУ (позволяет задействовать все 64кб ).

В сборнике нет регистров управления и дешифратора портов . Привёл просто для ознакомления . Не все схемы мои . В том или ином виде некоторые обсуждались в форуме либо применялись в какомто из клонов .

CityAceE
21.04.2025, 18:58
Набросал сборник схемок для расширения возможностей стандартного Специалиста .
Ещё вчера запросил доступ, но пока его нет. Удобнее было бы открыть доступ к этому файлу для всех желающих, у кого есть ссылка.

SYR-ALEX
21.04.2025, 20:04
Исправил . Пробуйте .

CityAceE
21.04.2025, 20:10
Исправил . Пробуйте .
Спасибо! Сейчас открылось.