Описание
компьютера Радио-86РК
|
Журнал
РАДИО
|
Существуют два основных режима работы любого дисплея: алфавитно-цифровой и графический. Разница определяется тем набором элементарных символов, с помощью которого формируется изображение. В графическом режиме работы дисплея в качестве элементарных символов выступают точки. При этом любое изображение, будь-то буква, символ или изображение какого-либо объекта образуется из набора точек. Качество изображения графического дисплея определяется общим количеством элементарных точек, образующих поле экрана. Например, широко применяемый в персональных компьютерах IBM PC дисплей EGA (Enhanced Graphics Array) обеспечивает на экране отображение 640х350=224 000 точек. Очевидно, что для работы с таким большим массивом информации требуются большой объем памяти для ее хранения и высокая скорость работы компьютера.
В простых компьютерах нередко используется только один — алфавитно-цифровой режим работы дисплея. Его особенность заключается в том, что элементарными символами являются уже “готовые” буквы алфавита, цифры и набор специальных знаков, которые называют псевдографикой, благодаря тому, что их сочетание позволяет строить те или иные геометрические фигуры. Для отображения символа в этом режиме процессору компьютера не нужно вычислять и заносить в ОЗУ координаты всех точек, из которых состоит символ, а достаточно просто сообщить контроллеру дисплея, какой именно символ необходимо отобразить на экране. Эта мера позволяет сохранить высокую производительность процессора, так как в оперативной памяти компьютера в этом случае не нужно хранить информацию о всех точках экрана, достаточно знать и помнить только о том, какой именно символ должен быть изображен в данном месте экрана, а для хранения такой информации требуется значительно меньший объем памяти. Алфавитно-цифровой режим работы дисплея применяется и в “Радио-86РК”.
В радиолюбительском компьютере “Радио-86РК” дисплеем является обычный бытовой телевизор, в котором используются только: видеоусилитель, устройства развертки и синхронизации, электроннолучевая трубка и источники питания. Чтобы получить на экране изображение, необходимо сформировать в компьютере все необходимые сигналы управления, аналогичные телевизионным, то есть кадровые и строчные синхронизирующие и гасящие импульсы, а также видеосигнал. Телевизор работает с аналоговым видеосигналом, в компьютере же мы имеем дело с цифровым. На изображении это сказывается, как уменьшение числа градаций яркости. В компьютере радиолюбителя “Радио-86РК” таких градаций всего две. Для получения на телевизионном растре изображения нужно синхронно с разверткой управлять яркостью свечения экрана, подавая на вход видеоусилителя телевизора соответствующий видеосигнал. Все необходимые сигналы формируются микросхемой D8 КР580ВГ75, которая называется программируемым контроллером электронно-лучевой трубки.
В первом приближении можно считать, что экран компьютера “Радио-86РК” заполняется 64х25=1600 символами, каждый из которых может быть буквой, цифрой или псевдографическим символом. Изображение на экране состоит из 25 строк по 64 символа в каждой строке. Каждому символу в строке соответствует так называемое знакоместо, представляющее из себя матрицу, образованную 8 телевизионными строками по вертикали и 6 точками по горизонтали. Таким образом каждому символу, отображаемому на экране, соответствует знакоместо, образованное 6Х8=48 точками, что обеспечивает приемлемое качество изображения символов и их хорошую разборчивость. Для разделения символов между собой предусмотрены “зазоры”, равные двум точкам матрицы. Ряд из 64 знакомест называют обычно знакорядом или информационной строкой. Между собой два смежных знакоряда разделены двумя строками телевизионной развертки, в одной из которых размещается курсор.
ЧТО ТАКОЕ ЗНАКОГЕНЕРАТОР?
Итак, закодированную компьютером информацию необходимо преобразовать в видеосигнал, который поступает на электронно-лучевую трубку. Эти операции и производит знакогенератор компьютера. Строго говоря, под знакогенератором следует понимать совокупность программных и аппаратных средств, преобразующую код элементарного символа в соответствующий видеосигнал. В “Радио-86РК” к аппаратной части знакогенератора можно отнести часть контроллера дисплея КР580ВГ75 (D8), ПЗУ К573РФ1 (D12), триггер К155ТМ2 (D13), сдвигающий регистр К155ИР13 (D15), один элемент “исключающее ИЛИ” К155ЛП5 (D5.2) и два инвертора К155ЛН1 (D9.8 и D9.4).
Особенность формирования знаков в алфавитно-цифровых растровых дисплеях с телевизионной разверткой заключается в том, что каждый элементарный символ формируется по частям, дискретно во времени. Одновременно формируются все знаки, составляющие информационную строку (знакоряд). Двигаясь по телевизионной строке, луч последовательно обходит все элементы одного ряда матрицы знакомест, входящих в текстовую строку. Формирование знакоряда заканчивается после того, как луч пройдет все 8 телевизионных строк, образующих знакоряд.
При работе компьютера информация об отображаемых символах поступает в контроллер дисплея КР580ВГ75, где запоминается в специальных буферных устройствах (буферах рядов), 7-разрядный код знака с выходов СС0—СС6 микросхемы КР580ВГ75 (выводы с 23 по 29-й D8) поступает на адресные входы A3 — А9 ПЗУ К573РФ1, где происходит его дешифрация. В знакогенераторе компьютера ПЗУ выполняет роль некоторого “банка”, в котором хранится информация о конфигурации символа, необходимая и достаточная для его воспроизведения на экране. По этой причине нередко ПЗУ знакогенератора называют просто “знакогенератор”, хотя это, как было сказано выше, не совсем правильно.
В компьютере “Радио-86РК” ПЗУ знакогенератора К573РФ1 (D12) имеет объем 1 Килобайт и содержит информацию о 2 в степени 7, т.е. 128 символах русского и латинского алфавита, знаках препинания, математических операций и т. п., а также 23 псевдографических символах и 2 неотображаемых символах — “пусто” и “пробел”. Кроме этого, в знакогенераторе предусмотрено место для служебных “символов”, которые являются командами управления (перевод строки, возврат каретки, управление курсором и т. п.) и не отображаются на экране. Отметим, что в компьютере “Радио-86 РК” количество такого рода команд невелико, что и позволило на “освободившиеся” места, занятые в других компьютерах командами, разместить набор символов псевдографики и тем самым сократить объем ПЗУ.
На адресные входы А0 — А2 ПЗУ знакогенератора поступает сигнал со счетчика строк контроллера электронно-лучевой трубки (выходы LC0 — LC2 D8), обеспечивающие дешифрацию по телевизионным строкам. На выходе ПЗУ формируется семиразрядный код, соответствующий одной строке отдельного знакоместа, этот код поступает на сдвигающий регистр К155ИР13 (D15), который тактируется сигналом с частотой, равной частоте генерации точек на экране дисплея. Выходной сигнал регистра инвертируется, суммируется с синхросмесью и через эмиттерный повторитель на транзисторе VT2 поступает на видеоусилитель телевизора.
КАК КОДИРУЕТСЯ ПЗУ ЗНАКОГЕНЕРАТОРА?
Если речь зашла о кодировке знакогенератора, то прежде всего необходимо уточнить, о чем идет речь. Различают две, совершенно разные таблицы кодов (кодировки). В одном случае речь идет об упорядоченной таблице, содержащей полный перечень отображаемых (а нередко и специальных, неотображаемых) символов, каждый из которых имеет вполне определенный порядковый номер-код. Нередко этот порядковый номер символа называют кодом ASCII, хотя это и не всегда соответствует истине. Во втором случае имеется в виду таблица программирования на техническом жаргоне “прошивки” ПЗУ знакогенератора.
ЧТО ТАКОЕ “КОД ASCII
Итак, для обеспечения совместимости информации набор символов, используемый компьютером, необходимо стандартизировать. Можно представить набор символов в виде таблицы и условиться, что каждому символу всегда будет соответствовать одно и то же место в таблице. Тогда каждому символу (букве, знаку, команде и т. д.) будет соответствовать также некоторое число, определяющее это место. Это число можно назвать кодом этого символа. Порядок расположения (кодирования) символов для обеспечения информационной совместимости компьютеров и программ для них не может быть произвольным и регламентируется рядом нормативных документов. Наибольшее распространение в мире нашел стандарт ASCII (American Standard Code for Information Interchange) — Американский стандартный код для информационного обмена, первая редакция которого регламентировала порядок кодирования 7-разрядным кодом набора из 128 символов. Этот стандарт неоднократно усовершенствовался, расширялся, однако основные принципы, заложенные в нем, применяются во всем мире и по сей день. Информационная совместимость обеспечивается тем, что каждому символу знакогенератора присваивается определенный номер (код), называемый кодом ASCII, хотя бывает, что на этом сходство со стандартом США и заканчивается. Номера, присвоенные символам знакогенератора компьютера “ Радио-86РК”, соответствуют ASCII в части управляющих символов, символов математических операций, знаков препинания, цифр и заглавных букв. Коды псевдографических символов не соответствуют действующим стандартам, что для простейших компьютеров вполне допустимо. В наибольшей степени в знакогенераторе “Радио-86РК” удовлетворяются требования отечественного стандарта КОИ — 7Н1, однако на любительском жаргоне часто говорят “коды ASCII”, но не “коды КОИ-7Н1 ”. Вообще, нередко словосочетание “коды ASCII” употребляется только для того, чтобы указать на символьное представление информации.
КАК ЗАКОДИРОВАТЬ ПЗУ ЗНАКОГЕНЕРАТОРА?
Универсальных правил кодировки ПЗУ нет, поэтому в качестве примера рассмотрим кодировку ПЗУ компьютера “Радио-86РК”. Проще всего это сделать на примере. Изобразим матрицу знакоместа в виде таблицы из 8 строк и 6 колонок (рис.1) Для упрощения увеличим число колонок на 2, т. е. доведем матрицу до размеров 8x8. Две крайние колонки слева использоваться для построения не будут, но их наличие несколько упрощает процесс кодировки. Каждому элементу строки знакоместа присвоим весовой коэффициент в двоичном формате; первому справа будет соответствовать коэффициент 2 в степени 0 (единица), второму — 2 в степени 1 (два), третьему—2 в степени 2 (четыре) и так далее. Правые четыре знакоместа образуют младший полубайт, а левые четыре — старший полубайт шестнадцатиричного числа. Весовые коэффициенты разрядов старшего и младшего полубайтов совпадают, например и шестой справа и второй справа элементы имеют весовой коэффициент 2. Это неудивительно, ибо по существу это есть разряды шестнадцатиричного числа. В зависимости от того, должен ли элемент знакоместа отображаться на экране светлой точкой или темной, соответствующий разряд двоичного числа принимает значение 0 и 1. В “Радио-86РК” принят такой порядок кодирования, при котором светлой точке соответствует 0 в соответствующем разряде двоичного числа, а темной 1. Таким образом, если все разряды равны 1, что соответствует двоичному числу 11111111 (шестнадцатиричному FF), то вся строка в знакоместе будет состоять из темных точек, т. е. будет погашена. Светящейся строке соответствует двоичное число 00000000 (шестнадцатиричное 0). Очевидно, что заполняя матрицу нулями и единицами, можно получить самые разнообразные комбинации светящихся и погашенных точек, каждый набор из 48 (64 с учетом дополнительных двух колонок) соответствует одному символу знакогенератора, а 8 шестнадцатиричных чисел образуют код этого символа, который должен быть записан в ПЗУ знакогенератора.
Таким образом, при ручной кодировке достаточно на листке бумаги изобразить необходимый символ в виде комбинации светлых и темных точек в пределах матрицы 8х6 точек, затем каждой светлой (на экране!) точке присвоить значение 0, а каждой темной — 1, слева добавить еще две “пустых” колонки, преобразовать получившиеся двоичные числа в шестнадцатиричные (не забывая присваивать точкам “пустых” строк значение 1), выписать шестнадцатиричные числа друг за другом, начиная с верхней строки и 8 шестнадцатиричных чисел дадут код, который нужно записать в ПЗУ для отображения разработанного символа.
“Место” символа в ПЗУ определяется той самой таблицей ASCII, о которой шла речь ранее. Первым в ПЗУ записываются коды символа с кодом ASCII, равным 0, вторым — с кодом 1, двадцатым — с кодом 13 (шестнадцатиричный эквивалент девятнадцати), сто двадцать восьмым — с кодом 7F и т. п. Каждому символу соответствуют 8 байт емкости ПЗУ, на весь знакогенератор требуется 8Х128=1024 байта, то есть ровно 1 Килобайт. Для примера на рис. 2—4 изображены символы 0, 1, Ш в соответствующих им матрицах точек и их двоичные и шестнадцатиричные коды ПЗУ знакогенератора.
Можно ли “УВИДЕТЬ” ЗНАКОГЕНЕРАТОР НА ЭКРАНЕ
К сожалению, содержимое ПЗУ знакогенератора “Радио-86РК” недоступно для прямого наблюдения, так как ПЗУ не имеет непосредственной связи с шинами данных и адреса компьютера. Поэтому вначале нужно позаботиться о записи кодов ПЗУ знакогенератора на магнитную ленту любым доступным способом: “прочитать” ПЗУ от другого компьютера, набрать вручную и т. п. Однако анализировать шестнадцатиричные коды знакогенератора неудобно, желательно преобразовать их в форму, удобную для наблюдения на экране компьютера. Такое преобразование выполняет простая программа, машинные коды которой приведены в табл.1.
Программу загружают в память компьютера и запускают командой G6000. Предварительно в память начиная с адреса 5000Н должна быть загружена таблица кодов знакогенератора. При нажатии любой из клавиш на экран последовательно выводятся символы, начиная с символа с кодом ASCII 0. В любой момент из программы можно выйти в МОНИТОР, нажав клавишу F4. Контрольная сумма программы 02CF. Рассчитана она на компьютер с объемом оперативной памяти 32К, но внеся небольшие изменения, ее можно перенести в область ОЗУ с начальным адресом 3000 Н. Для этого достаточно в ячейках с адресами 6002, 6016, 6011, 6028 и 6033 (в версии для 32К компьютера) вместо кода 60 записать 30. Кроме того, в ячейки 6007 и 6008 нужно записать новый адрес буфера, т. е. адрес области ОЗУ компьютера, куда будут загружаться коды ПЗУ знакогенератора, например 2000. Адрес начала буфера при работе программы выводится на экран вместе с заставкой, поэтому нужно исправить еще 4 ячейки, начиная с адреса 6064, Если новый буфер начинается с адреса 2000, то достаточно в ячейке 6064 вместо 35 (шестнадцатиричное значение кода ASCII цифры 5) записать 32 (шестнадцатиричное значение кода ASCII цифры 2). Контрольная сумма программы для 16К версии компьютера после всех внесенных изменений равна DEAC (для начального адреса буфера равного 2000).
НУЖНО ли ПЕРЕДЕЛЫВАТЬ ЗНАКОГЕНЕРАТОР?
По мере совершенствования программного обеспечения “Радио-86РК” недостатки знакогенератора и, в первую очередь, ограниченный набор символов, стали ощутимо мешать. Возникла задача расширения набора символов, расширения знакогенератора. Эта задача не так проста, как может показаться на первый взгляд. Главное препятствие — использование 7-битной кодировки, что позволяет использовать только 128 символов. Использование старшего, 8-го бита невозможно, так как программируемый контроллер электронно-лучевой трубки КР580ВГ75 (D8) воспринимает единицу в старшем разряде как признак команды, изменяющей режим его работы. “Недостающий” бит можно было бы передавать отдельно, используя, например, для этого регистры общего назначения контроллера видеотерминала КР580ВГ75. Такого рода усовершенствования известны, опробованы они и автором и в результате отвергнуты из-за значительного усложнения программирования. Вместо программного подключения дополнительных символов вполне можно смириться с ручным и включать дополнительный знакогенератор тумблером или кнопкой. Разумеется, при выборе способа управления дополнительным знакогенератором необходимо учитывать, какие символы в нем содержатся и для каких целей они применяются.
Чего же не хватает в имеющемся наборе символов? Прежде всего, строчных букв русского алфавита. Если в играх и расчетах их отсутствие не очень сказывается, то при работе с текстовыми редакторами неудобства очевидны. Кроме того, желательно улучшить графику некоторых символов, заменить нестандартные на общепринятые.
Итак, нужны строчные русские буквы. Где их разместить? Расширение объема ПЗУ с 1 до 2К позволяет ввести дополнительно 128 символов. В принципе, все 128 могут быть совершенно новыми, а построение знакогенератора может быть различным. Но, прежде всего, нужно позаботиться о возможности использования ранее написанных, а также заимствованных программ, то есть обеспечить совместимость персональных компьютеров “Радио-86РК” и программного обеспечения при замене ПЗУ знакогенератора. Из сказанного вытекает первое ограничение: первые 128 символов нового знакогенератора должны полностью повторять знакогенератор базовой модели “Радио-86РК”. Второе ограничение обусловлено тем, что при работе с текстовым редактором нужно одновременно использовать как строчные, так и прописные русские буквы. Не вызывает сомнений и то, что прописные русские буквы должны занимать одни и те же позиции в обеих “половинах” ПЗУ знакогенератора, то есть при переходе от одного режима к другому расположение прописных русских букв должно сохраняться — это третье ограничение. И, наконец, последнее, четвертое ограничение связано со служебными, не отображаемыми символами. Для правильной работы компьютера для них должно быть зарезервировано место и во второй половине ПЗУ.
Таким образом, фактическая свобода выбора сводится к выбору новых псевдографических символов. Для упрощения задачи автор не стал создавать новую псевдографику, а продублировал имеющуюся.
ПРОЕКТИРУЕМ СТРОЧНЫЕ РУССКИЕ БУКВЫ
Матрица точек для прописных букв равна 6х6. Это усложняет задачу создания хорошо читаемых символов. Хорошим подспорьем может стать программа, позволяющая “конструировать” символы прямо на экране и записывать их в буферную область ОЗУ. Один из вариантов такой программы приведен в табл.2. Она написана на языке BASIC на основе программы, предложенной ранее Д. Лукьяновым и А. Богданом.
Каких-либо особенностей программа не имеет. Отметим только, что в 30-й строке записан шестнадцатиричный адрес начала буфера 5000, если по каким-то соображениям буфер предполагается расположить в другой области ОЗУ, то соответствующий адрес нужно записать в строке 30.
Работают с программой так. Сначала загружают в буферную область ОЗУ коды знакогенератора. Это могут быть коды знакогенератора основной версии компьютера “Радио-86РК”, коды из табл.3 этой статьи, коды знакогенератора компьютера “Микроша”. В крайнем случае можно обойтись и без заполнения буферной области кодами знакогенератора, но в этом случае придется заново проектировать все 256 символов, а это потребует немало времени. Затем загружают интерпретатор ВАSICa и программу из табл. 2. После запуска этой программы на экран будет выведен заголовок:
* * * ПРОЕКТИРУЕМ ЗНАКОГЕНЕРАТОР * * *
Слева внизу от заголовка появится стилизованное изображение знакоместа, а справа — запрос:
НОМЕР ЗНАКА: ?
В ответ на запрос нужно ввести код ASCII символа, “конструированием” которого предстоит заняться. Код должен быть введен в десятиричном виде. Номера символов не обязательно брать по порядку, порядок их следования при проектировании может быть произвольным. Для примера введем код 65, что соответствует латинской букве А. Если в буфер были ранее загружены коды знакогенератора, то в рамке (знакоместе) появится изображение этой буквы, если же коды знакогенератора не загружались) то изображение может быть любым, скорее всего это будет хаотическое чередование светлых и темных пятен. Слева от знакоместа появятся шестнадцатиричные коды соответствующих строк символа.
Меню программы видоизменится и станет таким:Можно нажать клавишу 1 и перейти к проектированию следующего знака, можно выбрать 2 и приступить к редактированию изображения символа. Если изображение хаотично или испорчено при неудачном редактировании, целесообразно очистить знакоместо, нажав 4.
Инвертирование изображения бывает полезно при оценке начертания символа (для упрощения в программе принято инверсное отображение — то, что будет светлой точкой, в стилизованном изображении — темное и наоборот).
При переходе к редактированию вид экрана несколько меняется: появляется подсказкаиз которой следует, что перемещение производится клавишами курсора, а стирание и установка точки клавишами ПРОБЕЛ и ТОЧКА соответственно. В основное меню можно выйти, нажав клавишу R.
В качестве примера на рис. 1 и 2 изображены матрицы строчных русских букв “е” и “ж”.
Таким способом нужно отредактировать или создать заново все 256 символов нового знакогенератора. По окончании этой процедуры в буфере окажется требуемый набор кодов. Остается только сохранить его для дальнейшего использования, записав на магнитную ленту.
Таблица кодов ПЗУ знакогенератора на 256 символов, разработанная автором, приведена в табл.3, значения контрольных сумм поблочно — в табл. 4. Знакогенератор спроектирован в соответствии с изложенными выше принципами и положениями. Первые 128 символов практически повторяют базовый знакогенератор с небольшим уточнением: вместо нестандартного символа с кодом ASCII 30 (шестнадцатиричное 1E) введен новый символ типа “шахматное поле”, изменено начертание апострофа (код ASCII 39, шестнадцатиричное 27) и знака денежной единицы (код ASCII 36, шестнадцатиричное 24). Вторая половина знакогенератора повторяет псевдографику и служебные символы, а также прописные русские буквы первой половины, к которым добавлены строчные русские буквы.
Таблица 4
5000 - 50FF 3B51
5100 - 51FF 6D76
5200 - 52FF 3745
5300 - 53FF А0В2
5400 - 54FF 5С73
5500 - 55FF 6D76
5600 - 56FF 313E
5700 - 57FF A0B2
5000 - 57FF 1097
Имея таблицу кодов, нужно запрограммировать микросхему ПЗУ знакогенератора. Вообще говоря, в знакогенераторе можно использовать любые программируемые ПЗУ подходящей емкости, например К556РТ7, но удобнее использовать микросхемы, допускающие неоднократное программирование, например ПЗУ с ультрафиолетовым стиранием серии К573.
В старом знакогенераторе компьютера радиолюбителя “Радио-86РК” использовалась микросхема емкостью 1К К573РФ1. Можно увеличить емкость ПЗУ, подключив вторую такую же микросхему, аналогично тому, как подключением второго комплекта микросхем ОЗУ увеличивается объем ОЗУ с 16 до 32К, но, по мнению автора, лучше вместо К573РФ1 установить новую микросхему вдвое большей емкости К573РФ2, включив ее в соответствии с рис.3.
ЗАМЕНА К573РФ1 НА К573РФ2, К573РФ5
Программируемые запоминающие устройства с ультрафиолетовым стиранием серии К573 имеют много общего как по принципу хранения информации, организации доступа к ячейкам памяти, так и по конструктивным характеристикам. Они имеют одинаковый корпус, одинаковое число выводов, одинаковые нумерацию адресных входов А0—А9 и информационных выходов D0 — D7, общего вывода и вывода питания +5В. Однако есть и принципиальные отличия. Так ПЗУ К573РФ1 питается от трех источников питания (+5В, —5В и+12В), тогда как и К573РФ2 и К573РФ5 используют только одно напряжение питания +5В. Десятому адресному входу в этих микросхемах соответствует вывод 19, на который в К573РФ1 подавалось напряжение питания +12В. Сигнал “Выбор кристалла” (CS) в микросхеме К573РФ1 подается на вывод 20, а в микросхемах К573РФ2 и К573РФ5 — на 18, тогда как на 18-й вывод в К573РФ1 подается напряжение программирования (в К573РФ2 и К573 РФ5 оно подается на вывод 21 ), а вывод 21 в микросхеме К573РФ1 используется для подачи напряжения питания —5В. В свою очередь, у микросхем К573РФ2 и К573РФ5 имеется еще сигнал “Разрешение по выходу”, который подается на вывод 20. Приведенные различия показывают, что разобраться со схемами включения для начинающих радиолюбителей не так-то просто, а ошибки в справочниках могут вообще загнать любителя в тупик. Чтобы упростить задачу, перечислим операции, которые нужно проделать при монтаже на печатную плату компьютера ПЗУ К573РФ2 или К573РФ5 (годится и микросхема ПЗУ импортного производства 2716):
После этого предварительно запрограммированную микросхему можно устанавливать на плату и приступать к проверке работы компьютера с новым знакогенератором, которая производится обычным способом для двух половинок знакогенератора раздельно. Если микросхема ПЗУ прошита правильно и доработка платы выполнена без ошибок, то отныне Ваш компьютер обладает расширенным набором символов знакогенератора.
Ю. ИГНАТЬЕВ
г. Москва.
Отсканировано с журнала Радио №7, №8 1991 г.
Описание
компьютера Радио-86РК
|
Журнал
РАДИО
|