Вложений: 2
Три знакогенератор в строке без использования атрибутов
В очередной раз перечитывая документацию по ВГ75, обратил внимание на коды C0-DF так называемых «рамок», которые формируются с помощью выводов LA0/LA1 с кучей логики и на практике вообще неудобно в реализации…
Особый интерес вызвали коды E4 и E5, которые при установке LA0 управляют сигналом HLGT, представляются обычными символами с неограниченным количеством на строку и никакого срыва цикла ПДП не вызывают.
Среди всех публикаций модифицирования знакогенератора РАДИО-86РК существует ряд недостатков:- Переключение битом ППА ВВ55 неудобно тем, что знакогенератор переключается для всего экрана целиком
- Переключение атрибутами самой ВГ75 имеют свои нюансы с ограничением до 16 атрибутов на строку
- Переключение между двумя наборами "ЗАГЛАВНЫЕ/строчные" не так универсально и не позволяет красиво оформить текст
Решил я попытаться сделать набросок по доработке узла знакогенератора с использованием сигнала LA0, чтобы подключить дополнительное ПЗУ с таблицей КОИ-8, где одна половина - с латиницей, а вторая - с кириллицей и псевдографикой.
Доработкой схемы РАДИО-86РК является добавление ИМС К155ТМ2:- Левая половинка «KOI7/8» хранит флаг выборки таблицы знакогенерации ("0" - родное ПЗУ; "1" - дополнительное)
- Правая половинка «KOI8 (A10)» сохраняет флаг HLGT для выборки половинки дополнительного знакогенератора (128 символов с латиницей или 128 символов с кириллицей)
Навесной монтаж диодов и резисторов (подбираются соответствующим образом) на дополнительную ИМС К155ТМ2 или дополнительные ИМС К155ЛИ1 и К155ЛЛ1 решают проблему синхронизации и подавления выборки ПЗУ.
Дополнительное ПЗУ К573РФ2 с знакогенератором КОI8-R подключается параллельно с РФ1, но выводы 19 и 20 которого подключаются к нашему ТМ2.
Если схема работает, на экране в одной строке можно иметь сразу три знакогенератора:- Родной знакогенератор выбирается всегда началом строки растра (сигналы HRTC/VRTC сбрасывают первую половину нашего ТМ2)
- Коды E4 или E5 в знакоместе вырабатывает высокий уровень LA0 и разблокируют прохождение тактовой частоты на ТМ2 через элемент И (первая половина триггера установится в "1", элементом ИЛИ блокируя родной знакогенератор до конца строки, а вторая половина триггера запомнит младший бит кода E4/E5 уровнем HLGT для выбора одной из двух страниц знакогенератора в РФ2 (на схеме указаны лишь сигналы «KOI8 (OE)» для выборки и «KOI8 (A10)» для вывода A10 этого ПЗУ)
Таким образом, в каждой строке можно использовать целых три набора символов:- Родной РК'шный выбирается всегда по умолчанию
- Набор ASCII с латинницей в Верхнем и нижнем регистрах выбирается кодом E4
- Набор KOI8-R с кириллицей в Верхнем и нижнем регистрах выбирается кодом E5
(На самом деле, переключать можно любым кодом C0…EF, но именно E4/E5 формируют устойчивый уровень LA0 на всех линиях знакоместа.)
Особенность обработки кодов E4 и E5 позволяет их использовать в любом количестве на строку, не вызывая сбоя в цикле ПДП (экран не поплывёт).
Вложений: 1
Синхронизация ВГ75 внешним сигналом композитного видео
С юности меня интересовали студийные технологии телевидения.
В частности, наложение различной справочной информации на изображение в кадре, бегущая строка и т.п.
Сейчас вернулся к вопросу и сделал набросок одного из возможных вариантов синхронизации ВГ75 от внешнего источника композитного видео.
Из всех доработок:- Отрезаем вывод 7 ВГ75 к выводу 4 ЛП5 и оба выводим к дополнительному ТМ2
- Отрезаем выводы 2 и 3 у ИЕ4 от массы и подключаем к дополнительному ТМ2
Логика работы схемы следующая:- Первая половина ТМ2 включена в режим инвертирования сигнала «BURST» от LM1881 и пока не пришёл ССИ как лог. "0", с вывода 6 выдаётся лог. "0" на вывод 4 элемента ЛП5 D5.2
- В конце графической линии растра ВГ75 вырабатывает сигнал HRTC и стробирует загрузку "1" с первой половины ТМ2 во вторую половину ТМ2
- Загруженная лог. "1" с вывода 9 поступает на выводы 2 и 3 ИЕ4, переводя его в состояние сброса, чем прерывается поступление частоты сигналом CCLK на ВГ75 в ожидании синхроимпульса от внешнего источника
- Когда LM1881 обнаруживает синхроимпульс и вырабатывает лог. "0" на «BURST», с вывода 6 ТМ2 на вывод 4 ЛП5 D5.2 поступает лог. "1". Также лог. "0" на «BURST» сбрасывает вторую половину ТМ2 и на выводе 9 устанавливается лог. "0", разращая работу счётчика ИЕ4 в штатном режиме
- Так как ВГ75 всё это время находилась без тактирования по CCLK, теперь начинается отсчёт длительности сигнала HRTC уже с началом ССИ от внешнего источника, тем самым позволяя программисту использовать параметр «ZZZZ» как величину определения левого "бордюра"
Главное условие корректной работы: HRTC должен приходить раньше сигнала ССИ внешнего источника.
Решение: Либо чуть повысить частоту тактирования ИЕ4, либо в коде инициализации ВГ75 константу 93h заменить на 92h.
P.S.: Вариант схемы очень черновой и нигде не проверялся.
Также, в схеме нет (пока что) синхронизации по кадрам: Картинка будет прыгать.
Вложений: 1
Отлов Dummy-байта ПДП-пакета
В очередной раз перечитывая документацию к ИМС i8275/ВГ75, задумался над примечанием:
Цитата:
Note: If a Stop DMA character is not the last character in a burst or row, DMA is not stopped until after the next character is read. In this situation, a dummy character must be placed in memory after the Stop DMA character.
Тем самым, если в конце строки разместить код F1 или F3 в конце кадра, любой следующий символ будет прочитан, но проигнорирован самой ВГ75.
А это - целых 256 комбинаций кода!
Осталось лишь разработать схемку...
- Вентиль 5-И отлавливает ситуацию с кодами F0-FF
- Триггер ТМ2 защёлкивает флаг "управляющего кода"
- Регистр ИР27 запоминает следующий Dummy-байт
В общем, всё просто!
Опционально можно выбирать хоть любой из 256-ти знакогенераторов в каждой строке или устанавливать палитру.
В общем, дело вкуса и фантазии!
Тем самым, подобно как и в ПК Atari-XE, можно под каждую строку изменять и режим интерпретации символов (пропускать код через знакогенератор, непосредственно рассматривать его как три четырёхцветных CGA-пикселя или два восьмицветных пикселя и т.п.).
Вложений: 1
Загружаемый знакогенератор
Вообще-то, вариантов с перегружаемым знакогенераторов достаточно.
Но, вот ещё один вариант, от меня.
Пока только эскиз, концепт.
Суть идеи в том, что ОЗУ знакогенератора РУ8/РУ10 программирует сама ВГ75.- Полное формирование адреса LC0-LC2 и CC0-CC6
- Сохранение кода символа в промежуточный буфер на ИР23
- Запись кода предыдущего символа в ОЗУ сигналом LA1 только по линии подчёркивания с помощью кода псевдографики C0h/C1h
Тем самым, формально, просто на панельке меняем РФ1 на РУ8/РУ10 и добавляем промежуточный буфер на ИР23 параллельно этому ОЗУ - всего две ИМС.
На деле - нужна ещё некоторая логика.
Тем более, по холодному включению ОЗУ знакогенератора будет, естественно, пусто. И на экране ничего хорошего не увидим. Придётся вслепую загружать и запускать код первоначальной заливки фонта в это ОЗУ.
Собственно, процесс прошивки фонта - не так прост и требует несколько трюков:- ВГ75 настраивается на любой подходящий режим с высотой знакоместа в восемь линий
- Позиция линии подчёркивания сбрасывается в НОЛЬ
- В буфере экрана заливается таблица особым образом (код графики для конкретной линии подчёркивания; код C0h/C1h; код программируемого символа)
- При ширине экрана в 78 символов можно в строке запрограммировать разом до 25 символов
- Дожидаемся флага конца кадра в статусе ВГ75 и смещаем позицию линии подчёркиввания на единицу вниз
- Повторяем процесс на все восемь линий фонта
Тем самым, на перепрошивку фонта требуется восемь кадров.
Однако, есть вариант комбинированный - с РФ1 и ОЗУ, чтобы при первом включении всё работало как прежде.
В таком варианте ПЗУ штатного знакогенератора активируется всегда в начала каждого знакоряда - по HRTC.
Для переключения в пределах текущего знакоряда на ОЗУ знакогенератора используются коды псевдо-атрибутов E4h (младший 1 Кб РУ8/РУ10) и E5h (старший 1 Кб РУ8/РУ10).
Вложений: 2
Переключение знакогенератора командами управления
Как известно, ИМС ВГ75 имеет множество тайников, которыми рано или поздно следует воспользоваться.
Предлагаемый ниже эскиз доработки схемы позволит иметь на экране до четырёх знакогенераторов.
В пределах одного знакоряда можно выбрать только один из знакогенераторов.
Никакие атрибуты при этом не используются и доработка никак не скажется на цвете.
Переключение знакогенератора происходит кодами F0h, F4h, F8h и FCh, которые указываются в любом месте знакоряда.
Соответственно, переключение знакогенератора производится постфиксно, а не префиксно, как с атрибутами цвета.
Следовательно, самый последний код в очередном пакете знакоряда ПДП будет определяющим.
Схема достаточно проста и содержит всего три ИМС:- ЛЕ7: Левый в схеме вентиль отлавливает момент ответа ПДП, правый - отлавливает самую верхнюю скэн-линию знакоряда
- ЛИ3 отлавливают диапазон кодов F0h-FFh в пакете ПДП
- ТМ5.1 защёлкивает биты D2 и D3 пакета ПДП, а ТМ5.2 защёлкивает код страницы знакогенератора для нового знакоряда
Сигнал «Запрет» - опционален и может запрещать переключение знакогенератора. Может поступать откуда угодно - от тумблера или от ВВ55.
Недостаток схемы представляемой версии в том, что при первом включении триггеры-защёлки ТМ5 могут находиться в любом состоянии.
Соответственно, на экране будет активна неопределённая страница знакогенератора.
Что решается довольно просто. Например, записью кода F3h по адресу 7FF3h директивой M Монитора.
P.S.: Как и схема RAM-Фонта, данная схема пока нигде не проверялась и рассматривается лишь как концепт.
P.P.S.: Отдельная благодарность Дмитрию Иванову за внимание к моим фантазиям и их практической успешной реализации в рабочих прототипах.
P.P.P.S.: В комбинации со схемой выше можно получить до 12 знакогенераторов на экране - дюжину.