≡ Передовица » Hardware » Полезное » Про знакогенераторы
Про знакогенераторыТекстовые режимы у ВСЕХ АГАТов аппаратные, очень быстрые. ПЗУ знакогенератор располагается в отдельной микросхеме, емкостью 2кб. Этого объема достаточно для хранения 256-ти различных знаков. * * *Для Агат-7 встречаются два варианта: полный и сокращенный.
Сокращенный вариант появился из-за дефицита микросхем необходимой ёмкости. Схема навесного монтажа: Для апгрейда 96→256 достаточно убрать обе РТ5, убрать навесной паук из проводов, и на это место припаять одну РТ18 (футпринт на плате именно для неё). Теперь сравним знакогенераторы. Основной регион ($A0-$FF), который чаще всего используется в софте, совпадает полностью. Стиль букв несколько изменён. Прописные буквы ($40-$7F) на сокращенном знакогенераторе отображаются как заглавные. А вот регионы псевдографики ($00-$3F/$80-$9F) использовались в программах для Агат-7 исключительно редко. Вид СОКРАЩЕННОГО и ПОЛНОГО знакогенераторов Агат-7: 96% реального софта, если даже не поддерживали маленькие/большие буквы, всё равно старались выводить на экран с установленным старшим битом. "Агат-Автор" пытался использовать полный знакогенератор по честному. Причем он большие буквы выводил в инверсии, на случай, если з/г всё-таки сокращенный. Бейсики и сопутствующие им ДОСы семёрки довольно вольготно пользовались старшим битом в текстовых строках и текстовых файлах. Например, при выводе на экран стандартными средствами (через PRINT) у HELLO-60 D7 жестко ставится в 1. Отладочный комплекс и редактор РАПИРы выводили маленькие буквы голубым, а большие - зелёным. Но почему-то в нём тоже жестко устанавливался старший бит. Если эту установку отключить (подправив код в памяти или на диске) - редактор совершенно корректно работал с полным набором 256 знаков. 2% реального софта выводили буквы в виде "тексТ". Т.е. последний знак большой, остальные - маленькие. Они не были рассчитаны на 256, а их авторы в коде использовали макрос DCI - он последнему знаку в строке выставлял D7=1 - это такой, чисто Агатовский, вариант ASCIZ. Ну и, возможно, были какие-то ещё 2% со своей придурью. Часто возникает вопрос: а можно ли использовать в знакогенераторе Агат-7 микросхемы К573РФ2/К573РФ5 вместо К556РТ7? Короткий ответ - лучше не надо. Разработчики Агата знали, что они делают, читали справочники и не стали бы ставить К556РТ7 если можно было обойтись более доступной К573РФ2. Собственно футпринт на плате именно под РТ. Более подробный ответ такой. У микросхем ПЗУ есть важный параметр - время доступа. Этот параметр у них отличается в разы: 450нс у РФ2 и 60нс у РТ7 (70нс у РТ18. Это наихудшее (максимальное) время доступа. У большей части микросхем оно будет меньше, поэтому иногда указывают еще типовое время доступа. Оно для РФ2 равно 250нс. Когда нужно вывести символ на экран, его код сначала запоминается в регистр РПД, затем ПЗУ выдает нужный байт матрицы символа и наконец этот байт попадает в сдвиговый регистр. Интервал между записью в эти регистры и есть то время, за которое ПЗУ должно сработать. В результате, в режиме Т32 у ПЗУ есть 190нс на чтение, а в режиме Т64 - 95нс. И если для режима Т32 подобрать РФ2 реально (где-то одна микросхема из 5 будет иметь нужное время доступа), то для Т64 - без шансов. Только какой-то импорт. Последствия замены ПЗУ знакогенератора на К573РФ2 приводят или к пропаданию, или к искажению символов. Причем, это может быть незаметно в одних программах, но заметно в других, например в играх. Причина тут может быть в том, что время доступа у ПЗУ растет при нагреве. А нагрев усиливается, когда содержимое экрана постоянно меняется*. Если в текстовом редакторе картинка малоподвижная, то в играх наоборот. И времени доступа ПЗУ начинает не хватать. Символы начинают время от времени пропадать или искажаться. Это "моргание" может происходить не в каждом кадре и потому быть не очень заметным, но глаза от этого точно устанут. * Нагрев ПЗУ знакогенератора зависит не от активности работы процессора, а от содержимого видеопамяти. ПЗУ нагревается сильнее, когда в нем что-то активно переключается. Переключаются в нем дешифраторы адреса и выходные ключи. Положим, экран весь заполнен символом $A0 (пробел). На ПЗУ все время поступает один и тот же код, а выходы все время в одном и том же состоянии. Нагрев получается небольшой. Теперь заполним экран только заглавными русскими буквами. Их коды лежат в диапазоне $E0 - $F0. То есть, меняются только 5 бит кода символа. Дешифраторы начинают работать активнее, но не на полную катушку. Нагрев усилится. И, наконец, начнем заполнять экран символами из всего диапазона и дополнительно будем менять содержимое экрана в каждом кадре. Дешифраторы и выходные ключи начнут работать на полную катушку и нагревать ПЗУ еще сильнее. Понятное дело, что эффект будет больше зависеть от сочетания символов. Но когда картинка все время меняется, то выше шанс на такое сочетание напороться. Вот игры и повышают этот шанс. Спрашивается, а почему в Агат-9 в знакогенераторе стоит К573РФ2? Да просто в девятке увеличен интервал между записью в регистры. Поэтому ПЗУ остается больше времени на чтение байта матрицы и появляется возможность использовать более "медленную" микросхему. * * *Знакогенератор Агат-9. Используется микросхема К573РФ2. Размер всегда полный. Вид знакогенераторов ПОЛНЫЙ Агат-7 и АГАТ-9: Основной регион ($A0-$FF), который чаще всего используется в софте, совпадает с обоими вариантами для Агат-7. Прописные буквы ($40-$7F) на том же месте. Начертание некоторых символов отличается, не меняя смысла (например: размер квадратных скобок, символ $DF короче на один левый пиксель, стилизация символа $CD и т.д.). Теперь есть буквы "ё" и "Ё", а так же символом списка ($9F). Псевдографические символы Агат-9 отличаются от Агат-7. У девятки скорее научный уклон. Кроме того, нижний регион псевдографики ($80-$9F) заполнен обычными буквами, которые уже есть в основном регионе, но этому явлению есть объяснение*. Таким образом, различных символов только 226. Во времена Агат-9 программисты стали понемногу использовать псевдографику. Это позитивно сказалось на внешнем оформлении софта. Однако на Агат-7, такие программы выглядели не совсем как задумано. Вероятно поэтому, владельцы Агат-7, при апгрейде знакогенератора, предпочитали набор псевдографики от Агат-9. На компьютерах "Тошкент", по сути являющихся Агат-9, используется несколько иной набор символов знакогенератора. Разница в символах $20-$3F, это Татарский алфавит.
Причем ПЗУ системного монитора, на экземплярах известных нам, не подвергалось изменениям. Этот знакогенератор был воспроизведен по фотографии, так как сдампить с реальной машины его пока не представилось возможности. * * *Вид знакогенераторов в режиме яч121 у Агат-7 и режиме Apple у Агат-9: Знакогенератор для режимов эпл у девятки, берет тайлы из основного. Первые три фрагмента полностью дублируют $80-$BF (поэтому, например, нет знака доллара как в оригинальном Apple - вместо него жучек), а последний -- $C0-$FF. Первые $00-$7F вообще не используются. Кроме того, нет инверсии для РУС букв. Знакогенератор для режима яч121 у семерки расположен в микросхеме D35 на плате ячейки 121 и не зависит от основного. * * *Интересный момент. Во всех семерочных знакогенераторах пиксели идут от младшего бита к старшему, и нулевой бит обозначает линию, а единичный -- фон. А в девяточном -- от старшего к младшему, нулевой бит значит фон, а единичный -- линию. * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |