С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Понятно. Вопрос о 80 символов в строке исчерпан, т.к. совместимость с оригинальным РК важнее.
Еще такой момент, контроллер ПДП тактируется от генератора процессора. Если будет тактироваться от тактовой ВГ75, страшного ничего не случится?
С уважением, Дмитрий.
Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
ZXM-Phoenix в Телеграмм
VovanRK86 хотел подцепить переключатель на порт FF:
Можно стандартизировать, но вместо обычного регистра лучше поставить или триггер или регистр с общим сбросом + отдельная кнопка сброса, что бы можно, не сбрасывая весь комп, вернуться к стандартным настройкам. Только вот вопрос - нужно ли кому-то это, а то тема как-то угасла и у меня такое ощущение, что теневой знакогенератор есть только у меня...
С уважением, Дмитрий.
Pentagon-128 вер.2023+Turbo Sound+ZXM-GeneralSound
ZXM-Phoenix 2048+Turbo Sound+ZXM-GeneralSound+ZXM-SoundCard Lite
ZXM-Phoenix в Телеграмм
to Alex_LG
Ваша разработка потрясающа, наверное буду делать нечто подобное. Есть мысль повторить Ваше устройство 3 или четыре
раза, тогда тайлы (спрайты) можно заливать цветные!
- - - Добавлено - - -
UPD: to Alex_LG
Определился, начну с полного копирования Вашей разработки, потом буду прикручивать цвет.
В свете последних обсуждений в разделе РК тоже возникала идея сделать ещё два "слоя" памяти что даст цвет а системе RGB, что будет по аналогии с РС, и даст возможность делать цветные спрайты. Пока это только идея, но реализация очень проста - добавить порт на выбор "слоя" и пару РУ10 с регистрами сдвига. На данный момент занят другим, поэтому, если есть желание сделать подобное, могу только потдержать морально
UPD:
Сегодня много думал над темой. Итак, если кому-то интересно, излагаю, что придумал.
Во первых если выкинуть сдвиговый регистр на выходе ОЗУ, но вместо этого перебирать адресные входы, а память увеличить в четыре раза, то мы решаем проблему цвета на одной микросхеме ОЗУ.
Итак, берем 8К SRAM, это 13 адресных линий, и 8 линий данных.
4 адресных линии отдаем под строки (LC0-LC3), 7 отдаем под код символа (CC0-CC6), остаются 2...
Эти две мы подключаем к счетчику, который подключен к тактовому генератору пикселей (ЕМНИП 8 МГц), еще одну
линию этого счетчика подаем на счетверенный мультиплексор 2x4, который выбирает либо (D0-D3), либо (D4-D7), и они
подаются на выход, это и есть RGBI 16 цветов.
Во вторых Всем этим нужно управлять, для чего я предлагаю поставить регистр с параллельным заносом, и подключить
к дешифратору адреса (в адрес FFFF), если мы туда пишем байт, то он записывается в регистр.
Линия 0 этого регистра будет отвечать за отображение, если там записан 0, то мультиплексор перекидывает видеовыход
на классический выход с ПЗУ, и работает родной знакогенератор, если записана единица, то мультиплексор переключается на нашу систему и отображается загруженный, цветной знакогенератор.
Еще 2 линии управляющего регистра выбирают страницу, в ОЗУ знакогенератора, ведь "теневая" область имеет размер
2К, а цветной знакогенератор 8К, следовательно 2 бита выбирают одну из 4 страниц.
Порядок действий такой: По сбросу управляющий регистр обнуляется, и так-как нулевой бит оказывается сброшен, то ПЭВМ запускается в классическом виде, тогда модифицированная игра (имеющая загрузчик тайлов + сами тайлы), загружает знакогенератор, а потом переключает бит 0 в регистре управления, и система переходит в цветной режим.
Дальше загрузчик передает управление игре.
Пока так.
В ближайшее время нарисую и выложу блок схему.
- - - Добавлено - - -
Сделал набросок схемы на одном ОЗУ. Сначала буду пробовать на макетке с МГТФом, когда отлажу, буду править схему и наконец разводить плату.
Последний раз редактировалось ZEvS; 20.03.2017 в 00:18.
Материал повышенной сложности
Ниже излагается идея по настоящему графического РК86. Идея не сразу воспринимается, а некоторые некомпетентные читатели, увы, так и не смогут понять. За повреждение мозга вследствие чрезмерного умственно напряжения у лиц с пониженными или средними умственными способностями администация сайта и участники форума ответственности не несут.
Эту идею придумал и первым реализовал freddy в своём VGA-адаптере на базе ВГ75. Я лишь озвучиваю эту идею применительно к РК86.
При описании данной схемы есть сложности с терминологией, т.к используется двухступенчатая адресация. Строкой ниже называется строка ВГ75, а фонт-строкой называется буфер размером в 64*High в загружаемом ОЗУ фонтов, где High высота строки ВГ75 в линиях растра. Фонт-строка содержит 64 графических блока (или символа для ВГ75) размером High*8.
Идея заключается в том, что загружаемый фонт включается в адресное пространство CPU. Видео-схема РК используется для того, чтобы в каждой строке последовательно выдавать на экран символы с кодом от 0 до 63. В следующей строке аппаратно включается следующий фонт и также выводятся символы с кодами от 0 до 63. Каждая строка выводится своим фонтом. Таким образом каждый фонт становится буфером соответствующей строки (отсюда вводим термин фонт-строка). В итоге на экране выводятся 30 строк, в каждой строке выводится свой фонт, т.е графическое содержимое фонт-строки. Меняя то, что загружено в фонт-строку, мы программно меняем графическое содержимое строки.
В итоге, РК86 становится графическим компьютером с разрешением в 64*8=512 точек по горизонтали. Разрешение по вертикали меняется программно. Даже на TV видимы не менее 256 линий растра. Т.о имеем графический экран 512*256 занимающий 16 кб ОЗУ. С помошью фонт-строки в 64 символа содержашей нули формируются бордюрные строки по кадрам (пустые строки сверху и снизу видимого растра). В режиме строк высотой в 8 линий, ВГ75 программируется на вывод 38-ми строк, плюс строка на обратный ход кадровой развёртки. Общее число линий растра точно равно стандарту 39*8= 312, что сохраняет частоту кадров в: 139*64*8)= 50 ГЦ.
Добавив 2 кб ОЗУ для цвета, получаем полноценный цвет на знакоместо 8*8, что лучше для быстродействия, т.к здесь вывод происходит графическим образом. Для вывода одного символа надо записать уже не один байт, а минимум, 8 байтов. Экран организован нелинейно по горизонтали. 8 байтов - графика первого знакоместа ВГ75, затем 8 байтов - графика знакоместа ВГ75 расположенного справа. Под знакоместом здесь понимаются не знакоместо видимого шрифта, а знакоместо с которым имеет дело ВГ75. Реальный шрифт видимый на экране формируется программно и может быть любого размера - ширина и высота шрифта может быть любыми. Но только шрифт шириной в байт выводится быстро.
Итак, берём схему загрузки фонта от Alex_LG, но вместо 537РУ10 ставим 62256 и включаем её в адресах A000...BFFF. На старшие адреса этой 62256 (A10, A11, A12, A13) заводим 4 атрибутных сигнала ВГ75. Высота "символа", "строки" и знакоместа ВГ75 - 8 (но изменив режим ВГ75, это легко изменить). В 62256 64 фонтов в 0.5 кб, в каждом из которых 64 загружаемых символов 8*8 (символы 65-127 не нужны). Для получения полноценной графики, достаточно выводить эти фонты в каждую строку (свой фонт в каждую строку). Для этого в позицию 0 каждой строки заносится атрибутная команда 10xx.xxxx, которая включает фонт соответствующий 4-х битовому коду строки. Каждая строка заполняется инкрементируемыми кодами 0,1,2,3...63, что приводит к последовательному выводу в каждой строке 64-х символов текущего фонта. В каждой следующей строке отображается содержимое очередного фонта.
Тем самым ОЗУ для загрузки фонта превращается в экранное ОЗУ, а основное ОЗУ РК86 становится просто коммутатором, позволяющим на выходах ВГ75 появляться инкрементированным в каждом знакоместе кодам от 0 до 63, которые и адресуют экранное графическое ОЗУ.
Таким образом, полноценная графика достигается в схеме Alex_LG лишь за счёт замены ОЗУ 537РУ10 на 62256. Для работы схемы достаточно 30 загружаемых фонтов 8*8 по 64 символа в каждом. Так как 4 атрибута позволяют выбрать адреса в ОЗУ только для 16-ти строк, то ставится триггер, который сбрасывается по КСИ, а устанавливается по атрибуту 1111, т.е после 15-й строки. В момент когда после атрибута 1111 устанавливается атрибут 0001. Тогда в начале 16-й строки будут адреса с атрибутных сигналов 0001 и 1 старший адрес с триггера. Тем самым, можно иметь до 32-х РАЗНЫХ строк. Но всего число строк ВГ75 может быть любым. Атрибут 0000 соответствует пустой строке, с помощью которой формируется бордюр по кадрам.
С формированием ССИ в данной конструкции иначе, чем в базовом РК86. А именно, ССИ и сигнал гашения по кадрам формируются аппаратно. ССИ формируется из HRTC с помощью АГ3 (можно и с помошью 1533 ТМ2). Аппаратное формирование ССИ необходимо потому что шаг по строкам д.быть степенью 2-х. Т.е годится или шаг в 64 или в 128. Шаг 128 по многим причинам невыгоден (напр, тормозит вдвое), потому используется шаг 64. Из-за чего уже нельзя применить "трюк программного гашения по строкам", отчего приходится использовать ВГ75 правильно, а не извращённо.
В такой схеме цвет можно вводить только за счёт параллельной банки ОЗУ цвета, т.к атрибуты заняты для переключения "фонтов" по строкам. Т.к строка переносится просто записью в её начало атрибута, можно делать мгновенный аппаратный ролик вверх-вниз.
Но, если вышеописанную схему дополнить счётчиком по ССИ, реализующим автоинкремент "фонтов-строк" после вывода каждой строки, то все 4 атрибута ВГ75 освобождаются от задачи коммутации фонтов-строк и используются для управления цветом. РК86 превращается в графический компьютер с цветом за счёт атрибутов.
За счёт доработки в 10 микросхем, РК превращается в графический цветной компьютер. В таком режиме в качестве экранного ОЗУ можно использовать экранное ПЗУ размером в 38*64=2432 байт, содержащее 38 повторяющиеся строк, состоящих из инкрементируемых кодов X, 1, 2, 3 ... 63, где вместо X код атрибута выдающий номер каждой фонт-строки. Это ПЗУ может стоять на E000...EFFF, что освобождает все 32К для программ.
Вот эта идея - оригинальная и привлекательна. Она даёт схеме от Alex_LG совершенно иное качество - не спрайтовую графику и загрузку красивых фонтов, а полноценную графику. Графическое ОЗУ (ОЗУ фонтов-строк) размером в 16 кб можно включить в адресах A000...BFFF в виде двух страниц по 8К.
Проблема в том, что спаять проводками такую конструкцию сможет лишь человек умеющий паять конструкции на слепыше. А таких очень мало, основная масса владельцев РК менее трудолюбива и в состоянии только запаять детали в готовую плату.
Интересно, интересно. Но жаль, что Вы не указали цель данной доработки. Актуальна задача оцвечивания и ографи-чивания антикварных монохромных игр РК86, причём ценой в минимальное число деталей и труда. Но Вас возможно интересует какая-то другая задача. Например, просмотр 16-ти цветных картинок полученных конверсией фотографий в 16-ти цветные BMP-файлы. Или задача иметь красивый цветной фонт для текстообработки. Но для этого есть лучшее решение - полноценно графический РК86, что получается из платки Alex_LG, если заменить в ней ПЗУ на 62256 и грамотно программировать (см.выше)Сообщение от ZEvS
Не лучшим образом излагаете материал. Было бы неплохо сначала выразить идею, тогда последующий текст был бы понятен уже после первого прочтения. А Ваша идея, если я верно понял, заключается в том, что для КАЖДОГО пикселя по горизонтали, которых по-прежнему 384 в строке, считывается свой байт из ОЗУ цвета адресуемого кодом символа из основного экранного ОЗУ.Сообщение от ZEvS
Есть поправка. Вы указали, что только 2 адреса остаётся для "адресации" в пределах 8 битов байта графики. Это значит, что цвет задаётся сразу на два бита. Чтобы адресовать 8 битов надо 3 адреса. Однако и 3-й бит в такой схеме есть. Незачем заводить LC3, т.к используется режим с высотой знакоместа в 8 линий растра, где LC3 всегда 0. Таким образом: 3 линии адресов на LC0, LC1, LC2, 7 битов - код символа, и 3 бита остаётся для адресации пикселей в знакоместе по горизонтали. Объём памяти при этом увеличится не в 4, а 8 раз.
Однако трудно реально реализовать схему с таким быстродействием. Такт сдвига точек составляет 8 МГЦ, что соответствует периоду в 125 НСЕК. Из 10-ти 62256, что я имел в начале 90-х, только одна тянула в ЭВМ с тактом 8 МГЦ, основная масса тянула только 5 МГЦ (несмотря на паспортное быстродействие в 100 ns). В такой схеме разумно применять High Speed 10-15-ти наносекундные CMOS RAM.
Несмотря на то, что объём такого ОЗУ цвета в 8 раз больше объёма фонта в 1 кб, это не скажется на быстродействии игр. Т.к ОЗУ цвета загружается только один раз в начале игры, и никого не волнует если это будет длиться целых полсекунды.
Возможность раскрашивать символы с разрешением каждый пиксель любого цвета, - абсолютно бесполезна без ОЗУ спрайтов, т.е без исходной схемы от Alex_LG. Зачем раскрашивать во все цвета радуги буквы КОИ-7 из основного фонта РК86? То есть частично параллельно ОЗУ цвета должно быть включено ОЗУ фонта-графики, с объёмом в 1 кб, содержащее спрайты, например на двух 6514 (с организацией 1К на 4, это КМОП аналог 541РУ2).
Если организовать дешёвый выпуск плат под именем МЦПГ-РК86, это даст возможность для РК86 делать игры с качеством графики лучше чем в Денди, не говоря уж о ZX-Spectrum. Однако более-менее массовой может стать только очень простая конструкция (в идеале реализуемая за 2 часа работы паяльником на основной плате РК). Сложная cкоростная конструкция работающая на пределе возможностей обычных TTL (нужны скоростные) не привлечёт массы. Смотрите, разве конструкцию Alex_LG повторили многие? И организовать выпуск плат тоже не получилось. Ваша сложная конструкция не найдёт поклонников и заказчиков на платы, даже если Вы одновременно предложите все игры РК оцвеченные с высоким разрешением. Нужна максимально простая платка, дающая только те возможности, которые реально востребованы.
Схема загрузки фонтов от Alex_LG, дополненная 8К ОЗУ цвета, позволяет заимствовать спрайты от любых компьютеров, без ограничений на цветовое разрешение.
Высокое цветовое разрешение для игр не требуется. Даже в Денди огранились лишь 2-мя цветами в пределах 8-ми экранных битов. А т.к графику спрайтов всё-равно придётся брать от Синклера или из машин, где в лучшем случае цвет CGA, то разумно схему упростить. Можно сократить в 4 раза скорость доступа к цветовому ОЗУ до всего 2-х раз за время вывода знакоместа. Тогда имеем 8 битов на 4 пикселя. Можно использовать идею CGA - 2 бита на пиксель, отчего по-точечное разрешение по горизонтали снижается вдвое. Тогда удобно снизить вдвое разрешение и по вертикали, сделав цветовой пиксель 2*2. А лучше использовать 8 бит традиционно, 16 цветов для INK и 16 цветов для PAPER. 2 цвета в пределах 4-х точек.
Ну, а если чуть подумать, то выяснится, что при заимствовании спрайтов от ZX-Spectrum и ОРИОНА, достаточно 2-х цветов в пределах 8-ми битов, т.е то что предлагал я в теме "Модульный РК86".
А если ещё подумать, то выяснится, что цвет в спрайтовых играх достаточно задавать сразу на всё знакоместо, что позволит использовать спрайты от ZX-Spectrum, и сократит объём цветового ОЗУ в 8 раз. Тогда ОЗУ загружаемого фонта - 1 кб, а ОЗУ загружаемого цвета - 128 байт, столько же сколько символов.
Последний раз редактировалось barsik; 21.03.2017 в 22:32.
Именно эту цель я и преследую.
Нет, такая задача меня не интересует.
Думал над этим, но во-первых, РК слаб, для работы с полноценной динамической графикой, а во вторых, это означат, что все старые игры - на помойку, а новые никто писать не будет.
Да пикселей по прежнему 384, а символов по прежнему 64, только байт - два пикселя по четыре бита. Считываемый байт делится на два пикселя в формате RGBI.
2 адреса это горизонтальная развертка знакогенератора (там где ранее использовался регистр сдвига), а третий - выбор пикселя из двух, которые в байте (это делает мультиплексор на выходе).
Так, что горизонтальная развертка знакоместа 3 бита.
Не всегда, очень часто используется режим 6x10, и если не брать LC3, то на 9 и 10 линии появятся пиксели со 1 и 2 соответственно.
Я уже написал, что для горизонтали итак используется 3 бита, и 4 по вертикали.
Такт сдвига в ОЗУ составляет 4 МГц, а 8 МГц - это такт переключения выходного мультиплексора, выбирающего или линии D0-D3 или D4-D7.
С этим согласен, на то и расчитано. Только поправка, фонт в 4 раза больше по обьему. Ранее фонт был монохромным (1 битным), а теперь 4х битный (16 цветов).
Моя схема базируется на схеме Alex_LG, это раз.
Во вторых, с чего Вы взяли, что я собираюсь раскрашивать буквы КОИ-7?
Моя "задумка" позволяет на месте любого символа (буквы) нарисовать любую картинку, в формате 6x8x16 или 6x10x16. Может так понятнее?
Я к этому и стремлюсь.
Примерно так и работает моя схема. Кстати, Вы со схемой ознакомились? Которую я вчера выложил?
У меня тоже около 10 микросхем...
Именно, когда закончу, может и конструктор сделаем.
Я планирую так, неделя на пайку макетки с МГТФ, все уже закупил. Неделю на отладку. И неделя на разводку платы. Итого, грубо месяц.
Моя конструкция не намного сложнее конструкции Alex_LG, и вообще я пока еще ничего не создал. Просто выложил идею.
Если получится хорошая железка, подумаем о выпуске. Посчитаем себестоимость, и все такое.
- - - Добавлено - - -
UPD: Я позже чуть подробнее напишу как работает схема, вижу что не все и не всем понятно.
Последний раз редактировалось ZEvS; 20.03.2017 в 17:06.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)