Просмотр полной версии : Рамфонт Руслана Аликберова (схема, код)
Приветики!
Руслан вбросил очень интересную схему программирования ЗГ через ВГ75. Разобраться в ней самостоятельно у меня мозгов не хватило, поэтому я собрал и протестировал свой вариант, максимально простой и понятный конкретно мне :)
Алгоритм Аликберова заключается в том, чтобы программировать ЗГ через сам ВГ75. И это логично, ведь там уже есть все необходимые для адресации сигналы.
Сигнал LA в ВГ75 можно генерировать в программно задаваемой линии символа. Из него можно формировать сигнал записи в ОЗУ, сдвинув его на следующий символ. Данные для записи можно брать тоже с ВГ75, только их надо перед записью сохранить в промежуточном буфере. Выходы CC0-CC6 ВГ75 используются как шина данных, и как шина адреса. Таким образом, можно сформировать экран с символами, который сам будет программировать знакогенератор через ВГ75. Алгоритм заливки шрифта получается такой:
1. Запоминаем выходы CC0-CC6 ВГ75 (данные) в промежуточный буфер.
2. Устанавливаем линию символа, которую хотим изменить.
3. По сигналу LA записываем содержимое буфера в ОЗУ ЗГ, пропустив одно знакоместо (адрес).
На экране это выглядит, как последовательность из трех байт: байт данных, 0xC0 (LA1), байт адреса.
Я паять не очень люблю (например, схему от уважаемого Alex_LG (https://zx-pk.ru/threads/20714-pomechtaem-ili-vopros-o-videovykhode.html?p=1210334&viewfull=1#post1210334) мне вообще не осилить), поэтому старался сделать схему максимально простой - если я смог спаять, значит и другие смогут. Триггеры формируют из сигнала LA1 сигнал записи в РУ10. Транзисторы гасят импульсы записи в ИР23. Линия записи идёт из ИР23 в РУ10 для того, чтобы сигнал записи не появлялся раньше данных. Плата втыкается вместо ПЗУ шрифта.
https://zx-pk.ru/attachment.php?attachmentid=82321&d=1747235559
Тайминги:
https://zx-pk.ru/attachment.php?attachmentid=82324&d=1747237697
Макетная плата в процессе:
https://zx-pk.ru/attachment.php?attachmentid=82319&d=1747235400
Макетная плата на месте:
https://zx-pk.ru/attachment.php?attachmentid=82320&d=1747235480
Код для заливки шрифта (https://zx-pk.ru/attachment.php?attachmentid=82323&d=1747236363) - не оптимальный, можно ещё цикл прикрутить, да и вообще есть место для манёвров.
Видео арканоида с кастомным шрифтом: https://disk.yandex.ru/i/UqMon8XEcWSf_g
Скрин игры Клад со схемой расцветки, которая пока не заслуживает внимания:
https://zx-pk.ru/attachment.php?attachmentid=82322&d=1747235658
В ходе отладки схемы выяснилось, что из РУ10 можно успевать читать цвет. Получается RGB цвет для фона, RGB цвет для пикселей в линии символа, бит яркости для фона, бит яркости для пикселей. Эту схему только начинаю реализовывать, пока нечем похвастать.
Огромное спасибо Руслану, что поделился идеей! Над схемой и всем процессом заливки шрифта надо ещё сильно поработать. Но я уверен, что такой простой заливатор шрифтов должен быть во всех последующих реинкарнациях РК.
Схема совершенно революционная, хак функций ВГ75.
Немного программной магии, совсем чуть деталек, и вг-шка прогружает в РУ10 не только адрес, но и данные.
Браво за реализацию это смелой и безумной идеи. :v2_thumb:
Для тех кто паяет, проще некуда.
Для программистов очень интересно.
- - - Добавлено - - -
В ходе отладки схемы выяснилось, что из РУ10 можно успевать читать цвет. Получается RGB цвет для фона, RGB цвет для пикселей в линии символа, бит яркости для фона, бит яркости для пикселей. Эту схему только начинаю реализовывать, пока нечем похвастать.
*Огонь*
Alikberov
15.05.2025, 13:25
Руслан вбросил очень интересную схему программирования ЗГ через ВГ75. Разобраться в ней самостоятельно у меня мозгов не хватило, поэтому я собрал и протестировал свой вариант, максимально простой и понятный конкретно мнеВы здорово упростили мою исходную схему (https://zx-pk.ru/threads/26455-chto-maksimum-mozhno-vyzhat-iz-kr580vg75-intel-8275-obsuzhdenie.html?p=1206001&viewfull=1#post1206001) и, даже не знаю, справедливо ли за моим именем и идею, и схему закреплять.
ИМХО, по-хорошему, нужно полностью атрибуты подать на РАМ, а цвет сделать только в рамках тайлов (подкраска таблиц мало кому нужна, а подкрашенные тайлы - здорово смотрятся в играх).
Получится недо-КР-04 - с графикой и цветом!:v2_dizzy_punk:
даже не знаю, справедливо ли за моим именем и идею, и схему закреплять
Главное же не схема, а идея, алгоритм. Сам я до такого додумался бы ну лет через пять :v2_dizzy_roll:
И прежде чем расхваливать, хорошо бы, чтобы кто-нибудь эту схему повторил. У меня глаза замылились, я могу не увидеть очевидных глюков.
Получится недо-КР-04 - с графикой и цветом!:v2_dizzy_punk:
Так и должно получиться, если в тайминги вписаться. Надо попробовать читать из РУ10 два раза в пределах одного знакоместа. Сначала цвет, а потом пиксели. Вроде бы хватает на это времени. Вот продумываю, как это проверить. Проще всего на последний бит адреса РУ10 завести сигнал CCLK. А во время записи управлять этим битом через атрибут.
Alikberov
15.05.2025, 17:03
И прежде чем расхваливать, хорошо бы, чтобы кто-нибудь эту схему повторилИМХО, как минимум - нужно разобраться с обеспечением надёжного хранения при отключении питания.;)
(К сведению интересующихся: Приходится вслепую загружать код для загрузки дефолтного фонта при каждом "холодном старте":v2_dizzy_facepalm: )
Главное же не схема, а идея, алгоритм. Сам я до такого додумался бы ну лет через пятьНу, так на обсуждение идеи и принципа ушло более года, если не ошибаюсь;)
Надо попробовать читать из РУ10 два раза в пределах одного знакоместа.
Чем не подходит моя цветовая схема (https://zx-pk.ru/threads/35104-r86rk-dorabotka-do-tsvetnosti.html?p=1193513&viewfull=1#post1193513)?;)
ИМХО, как минимум - нужно разобраться с обеспечением надёжного хранения при отключении питания.;)
Тут много вариантов, и я пока не во всём разобрался. Я хотел просто батарейку поставить на ОЗУ, но игры могут заливать свой шрифт, и исходный всё равно придется восстанавливать. Есть ещё вариант поставить вторую ТМ2, приделать к ней кнопку, с выходов направить сигналы OE на РУ10 и РФ5. Переключать ОЗУ/ПЗУ тактовой кнопкой. Можно в этой схеме сделать так, что при записи автоматом произойдёт переключение на РУ10. Вторую половину ТМ пустить на защёлку седьмого бита, чтобы сделать одну градацию серого цвета.
Чем не подходит моя цветовая схема (https://zx-pk.ru/threads/35104-r86rk-dorabotka-do-tsvetnosti.html?p=1193513&viewfull=1#post1193513)?;)
Да всем подходит. Не хочется только с VGA связываться. Не хочу терять аналоговый флёр. Пробовал делать цвет, как на Apple 2 через композит, но у РК другие тайминги:
https://zx-pk.ru/attachment.php?attachmentid=82325&d=1747320479
Надо ещё подумать. Сначала надо просто научиться байт цвета из РУ10 вытаскивать.
Alikberov
15.05.2025, 18:15
Я хотел просто батарейку поставить на ОЗУ, но игры могут заливать свой шрифт, и исходный всё равно придется восстанавливать.В новодельных играх "нового поколения" можно договориться и соблюдать условия - не перезаписывать критические символы (0-9, A-F, АДИКОР и т.д.);)
Есть ещё вариант поставить вторую ТМ2, приделать к ней кнопку, с выходов направить сигналы OE на РУ10 и РФ5. Можно в этой схеме сделать так, что при записи автоматом произойдёт переключение на РУ10.Тогда уж начинать собирать/отлаживать второй вариант моей схемы, где и РФ1 на месте, и РУ10 активируется только псевдосимволами E4/E5 (три знакогенератора на строку).
И никаких кнопок и рубильников!:D
Пробовал делать цвет, как на Apple 2 через композит, но у РК другие тайминги:
У меня подобные "оранжевые вспышки" возникают при некотором заполнении экрана.;)
И никаких кнопок и рубильников!:D
Мне наоборот кажется, что кнопка ну очень поможет в отладке! Но батарейку поставить не долго, чтобы попробовать.
Про зарезервированные символы не скажу. Первые 16 символов точно будут псевдографикой для ускорения работы с ней.
У меня подобные "оранжевые вспышки" возникают при некотором заполнении экрана.;)
Я научился ими управлять, но нужна корреляция с несущей частотой цвета.
Alikberov
15.05.2025, 18:35
Мне наоборот кажется, что кнопка ну очень поможет в отладке!Так-то оно так, согласен!
Но "для потребителей" - элегантнее будет "без рубильников";)
P.S.: ИМХО, если сама технология "RAM-фонта" по нашей системе взлетит (действительно: нужно текущую схему "продвигать в народ", без цвета - только графика), думаю, неплохо будет сделать продолжение - полную схему (многим позже).
без цвета - только графика
Я тоже думал, что цвет попозже. В любом случае, если это будет некая серийная плата, на неё разумно поставить восьмибитную защёлку. Чтобы наконец-то избавиться от отстающих атрибутов. Использовать её или нет, это уже личное дело каждого. У меня впаяна панелька под ИР1, на этом регистре можно защёлкивать атрибуты и серый цвет.
Пишут, что ток потребления в режиме хранения у РУ10 всего 0.4 мА, кто-нибудь пробовал к ней батарейку подключать? Долго держит?
не перезаписывать критические символы (0-9, A-F, АДИКОР и т.д.)
Наверное даже не так. Нужно стараться использовать второй набор символов. В моей схеме он включается атрибутом GPA0.
В прошлом веке я делал внешнее ПЗУ, читаемое командой R. На плате было 8 панелек под РФ2. Слегка модифицировав плату, я использовал 8 штук 537РУ10 с резервным питанием от трех аккумуляторов Д-01.
Получилось 3.75В, 0.1АЧ. На неделю хватало точно.
Ага, спасибо! Пишут, что емкость CR2032 = 210 мАч, это должно дней на 20 хватать. Но не факт конечно.
Схема совершенно революционная
на спектруме подобное делали ещё лет 30 назад.
в контроллере принтера также меняли РФ2 / РУ10 и получали 2К памяти в области ROM.
там можно было разместить резидентный монитор (с вызовом по NMI)
или например муз.плейер (с доступом ко всей памяти)
или например муз.плейер (с доступом ко всей памяти)
В РК ПЗУ шрифта изолирована от всей возможной памяти и от процессора. Из неё невозможно ничего читать, а тем более код исполнять. Если бы было так же просто, как на Спектруме...
Не хочется только с VGA связываться.
И не нужно, VGA создан как NTSC для американских розеток )
- - - Добавлено - - -
на спектруме подобное делали ещё лет 30 назад.
Во первых, не подобное. Ибо ВГ75 на спектрумах нет.
Во вторых, зачем вообще спектрум (как схемотехнически кардинально другая машина) в теме про РК.
Эта схема и решения чисто ВГшные. Как обойти ее "дурь" наиболее оригинально.
Ведущий_специалист
16.05.2025, 23:10
Эта схема и решения чисто ВГшные. Как обойти ее "дурь" наиболее оригинально.
Остается теперь понять как обойти дурь атрибутов, хотя бы частично.
Остается теперь понять как обойти дурь атрибутов, хотя бы частично.
Вот здесь взят старший (свободный) бит из РУ10 и биты СС5, СС6 для формирования RGB сигнала. Эти три бита идут на цвет по схеме Апогея. Таким образом таблица символов поделилась на цвета с возможностью коррекции одним битом. Это вот проще уже не придумать:
https://zx-pk.ru/attachment.php?attachmentid=82322&d=1747235658
И вариации на тему:
https://zx-pk.ru/attachment.php?attachmentid=82330&d=1747427498
https://zx-pk.ru/attachment.php?attachmentid=82331&d=1747427508
Если использовать вариант с батарейкой, то для первой таблицы символов можно оставить белый цвет, а вторую таблицу разукрасить.
Примастырил батарейку CR2032, посмотрим, на сколько хватит.
Нафига? А что мешает грузить фонт при старте?
Товарищ видимо не в теме, про размер исходной ПЗУ в РК. где едва "упакованный ногами" Монитор помещается.
И даже Киселев умудрился повторить... :biggrin:
Так что, либо кромсать посадочное место ПЗУ, либо батарейка.
Ну тут конечно да, тут ещё надо продумывать. Штука совершенно новая для РК и необычная. Гармонично вписать её сходу не получится, но варианты нащупываются. Мне вообще пока с батарейкой нравится, честно говоря. Можно шрифт интересный поставить на постоянку, и сразу появляется новый взгляд на уже привычные вещи.
Процедура загрузки тоже немного оптимизировалась, были шероховатости, они убраны. Ещё погоняю, потом выложу.
Батарея CR2032 работает уже 4 недели, напряжение на ней сейчас 2.9В! Может батарейка, это не такое уж плохое решение?
Она наверное литиевая. Но если поставить держатель под нее - то можно пользоваться аккумулятором. Под них на алике зарядные устройства к usb есть.
Товарищ видимо не в теме, про размер исходной ПЗУ в РК. где едва "упакованный ногами" Монитор помещается.
Товарищ действительно не в теме.) И ему сложно понять почему не найти возможность увеличить объём ПЗУ. Например, установив 2732/64 и добавив управление старшим битом адреса с ВВ55, если это нужно?
А городить огород со знакогенератором можно. И с 4-х недельной батарейкой, а лучше с аккумулятором и отдельным ЗУ!
Лог по батарее))) Батарея не садится вообще. Шрифт утёк один раз, видимо батарейку надо ту, которая проводами припаивается. Окислился у меня держатель батареи позаимствованный из чего-то очень старого. Ну или просто держатель качественный используйте.
- - - Добавлено - - -
Плата в батареечном варианте получается примерно такая, она втыкается вместо ПЗУ шрифта:
https://zx-pk.ru/attachment.php?attachmentid=82503&d=1752394246
https://zx-pk.ru/attachment.php?attachmentid=82504&d=1752394268
Пины для платы заказаны такие: https://aliexpress.ru/item/1005003082467854.html?spm=a2g2x.cart.cart_split.2. 32764aa6gkJmUw&sku_id=12000023973777298
Работа идёт крайне медленно, ибо я не владею знаниями по софту для разводки плат, учусь на ходу. Даже понятия не имею, как потом платы заказывать.
Благодаря схеме рамфонта мы можем изменить таблицу символов. А вот схема вдогонку, чтобы эту таблицу раскрасить:
https://zx-pk.ru/attachment.php?attachmentid=82795&d=1757860805
ИР23 защелкивает старшие биты адреса символа, таким образом таблица символов делится на 8 кластеров произвольного цвета.
В двухпортовый регистр 1802ИР1 можно записать 16 значений. 8 для цвета пикселей и 8 для цвета фона + яркость. Младший полубайт задаёт номер цветного сектора, а старший значение RGBI.
Таким образом тайлы с травой можно сделать зелёными, воду синей, огонь красно-желтым и т.д. Примеры я выкладывал на второй странице топика:
https://zx-pk.ru/attachment.php?attachmentid=82322&d=1747235658
Но там ещё не было цвета фона.
Пока могу проверить эту схему только частично. Нет у меня нормального VGA конвертера. Но вроде как всё должно работать.
Вот предлагаю к обсуждению, может получится ещё лучше сделать.
Знать не знал про 1802ИР1, спасибо за подсказку!
Вот набросок платформера с предлагаемой схемой цвета:
https://zx-pk.ru/images/styles/asdialup/misc/lightbox_progress.gif
CodeMaster
18.09.2025, 10:18
Вот набросок платформера с предлагаемой схемой цвета:
Разогнать 8080 до 5 МГц и ZX, MSX, CPC и прочие Z80 курили бы в сторонке в начале 80-х (конечно нет, обвязка на Z80 компактнее и дешевле).
i8085 с его скрытыми командами мог бы составить конкуренцию спеку однозначно. Там всё проще по питанию и по обвязке, чем в 8080. Очень даже интересно поиметь такую машинку сейчас.
CodeMaster
18.09.2025, 10:53
Там всё проще по питанию и по обвязке, чем в 8080.
Но было уже поздно, появился Z80. Хотя, по цене он был с ним сравним, но и частота, и функционал меньше.
Батарейка всё ещё работает, но видимо скоро её уберу т.к. получилось написать биос со шрифтом.
У машин на статике (не уверен, что у всех) ПЗУ после сброса стартует с адреса E000. Это значит, что можно ставить ПЗУ размером 8кб. Так у меня и получилось. Биос стартует с E000, настраивает все устройства, проверяет память. Потом можно выбрать загрузку с CF-карты FAT16 или через ППА, или вынырнуть в Монитор, который в 8кб ПЗУ сидит на старом адресе. Примерно так это всё выглядит:
https://zx-pk.ru/attachment.php?attachmentid=83085&d=1761928527
Про CF-карту пока могу только сказать, что она работает прям на ШД в режиме 8-бит, файлы с неё читаются. Но эксперимент пока не завершён.
Биос занимает 2кб, он сжат архиватором, на старте распаковывается и заливается в рамфонт Руслана.
Попутно родился загрузчик для памяти AT28C64, которая цепляется на ППА. Иначе я бы не смог отладить биос.
Сам биос можно порезать, если вы не планируете использовать файловую систему. Без загрузки файла ОС с CF-карты наверняка тоже красиво получится.
Мне очень удобно потому, что на плате стоит ВИ53, но Монитора с её инициализацией я не нашёл. Соответственно её настраивает биос. А может кто-то часы добавит или другой функционал - всё можно прописать в биос.
Все исходники и прочее выложу позже, когда система заработает без косяков.
Еще схема допилилась до возможности записывать шрифт шириной не 6 точек, а 8 точек.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot