Передовица » Hardware » Частные разработки » Программируемый знакогенератор

Программируемый знакогенератор

Автор: Алексей Салтыков. Разыскивается! Если вы автор или что-то знаете о нём, свяжитесь с нами! (ЗАЧЕМ ЭТО?)

Эмулирует штатное ПЗУ знакогенератора, позволяя программно модифицировать используемые в текстовом режиме шрифты. Интересно что устройство выполнено на редкой монтажной плате ЯБ7.104.194 от ЛЭМЗ.

ПЗУшка программируемого знакогенератора.

Поддерживается системой Мастер Бейсик.

Агат имеет как текстовые так и графические режимы отображения информации. Графический: программно можно задавать цвет отдельных точек. Текстовый: можно задавать выводимый символ и его цвет для каждого отдельного знакоместа. Шрифт, используемый при этом, хранится в ПЗУ. У ранних Агат-7 - 128 знаков, у поздних - 256.

В общем-то, программы, которым требуется нестандартный шрифт, могут использовать для вывода информации графический режим. Но есть две проблемы: у Агата-7 максимальное разрешение графики - 256x256 монохромных точек, в то время как в текстовом режиме 64x32 - реальное пиксельное разрешение - 448x256. Кроме того, страница графики, даже монохромной, 512x256 Агата-9 - это видеостраница объёмом 16 Кб, в то время как монохромный текстовый режим - 2 Кб. Это уже существенно: обеспечить быстрый скроллинг и иное обновление 2 Кб гораздо проще чем 16 - ведь все видеооперации, кроме собственно синтеза символов, в Агате реализованы программно.

* * *

Программная модель

С точки зрения схемотехники плата заменяет микросхему ПЗУ знакогенератора, позволяя, таким образом, рисовать в текстовом режиме относительно произвольные рисунки. Для установки платы нужно снять штатное ПЗУ с панельки и включить вместо него переходную колодку контроллера. А сам контроллер установить в любой свободный слот.

Разработана для Агат-9, хотя, возможно, без переделок встанет и на семёрку.

Аппаратно содержит три блока памяти:

  • регистр управления (4 бита)
  • буфер ОЗУ-знакогенератор (2 Кб)
  • ПЗУ-знакогенератор (2 Кб)

После включения питания регистр управления сбрасывается в 0000 RC-цепочкой, общесистемный RESET платой игнорируется.

Биты регистра управления (что будет, если записать "1"):

0 - разрешает отображение ОЗУ-знакогенератора на адреса C800..CFFF. ОЗУ при этом доступно как на чтение так и на запись ЦП.

1 - переключается между ПЗУ-знакогенератором, установленном на модуле ("0") и ОЗУ-знакогенератором ("1").

2 - блокирует эмуляцию (т.е. модуль устанавливает состояние выходов на переходной колодке в Z-состояние независимо от других сигналов). Если другой ПЗУ/модуля нет - все символы будут восприняты системной платой как состоящие полностью из "1".

3 - не используется.

Значение регистра задаётся записью произвольных данных в адреса C0nx, где n - номер слота + 8, в котором установлен контроллер, а x - новое значение регистра. Прочитать значение регистра нельзя.

Буфер ОЗУ-знакогенератора:
В целом: как слышится так и пишется.
Т.е. символы идут подряд - от 0 до 255, строки символов подряд (сверху вниз), биты в байтах (колонки) подряд (старший - левее), старший бит игнорируется, т.к. матрица дисплейного контроллера 7x8. После включения питания содержимое неопределено.

Т.е. чтобы символ с кодом 0x00 выглядел как символ "0" нужно сделать что-то примерно такое:

C0D1:0
C800:00 22 26 2A 32 22 22 00
C0D2:0

Попытки чтения (кроме области C800..CFFF, если разрешено) игнорируются (т.е. выходной формирователь шины данных не выходит из Z-состояния), считанные значения должны быть такие же, как если бы модуль отсутствовал вообще (т.е. зависят от системной платы).

На сайте "Проект создания реплик ПЭВМ Агат" выложен проект ячейки программируемого знакогенератора.

* * *

Использование материалов проекта agatcomp без получения предварительного письменного разрешения agatcomp запрещено.


Почта для обратной связи: mail@agatcomp.ru


Живое общение по теме Агата: Telegram группа Agatcomp.


Накопленные знания и проекты: тематический ФОРУМ.


© 2004-2024 agatcomp.su / agatcomp.ru

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *