≡ Передовица » Hardware » Частные разработки » Программируемый знакогенератор
Программируемый знакогенераторАвтор: Алексей Салтыков. Разыскивается! Если вы автор или что-то знаете о нём, свяжитесь с нами! (ЗАЧЕМ ЭТО?) Эмулирует штатное ПЗУ знакогенератора, позволяя программно модифицировать используемые в текстовом режиме шрифты. Интересно что устройство выполнено на редкой монтажной плате ЯБ7.104.194 от ЛЭМЗ. ПЗУшка программируемого знакогенератора. Поддерживается системой Мастер Бейсик. Агат имеет как текстовые так и графические режимы отображения информации. Графический: программно можно задавать цвет отдельных точек. Текстовый: можно задавать выводимый символ и его цвет для каждого отдельного знакоместа. Шрифт, используемый при этом, хранится в ПЗУ. У ранних Агат-7 - 128 знаков, у поздних - 256. В общем-то, программы, которым требуется нестандартный шрифт, могут использовать для вывода
информации графический режим. Но есть две проблемы: у Агата-7 максимальное разрешение графики -
256x256 монохромных точек, в то время как в текстовом режиме 64x32 - реальное пиксельное разрешение
- 448x256. Кроме того, страница графики, даже монохромной, 512x256 Агата-9 - это видеостраница
объёмом 16 Кб, в то время как монохромный текстовый режим - 2 Кб. Это уже существенно: обеспечить
быстрый скроллинг и иное обновление 2 Кб гораздо проще чем 16 - ведь все видеооперации, кроме
собственно синтеза символов, в Агате реализованы программно.
* * *Программная модельС точки зрения схемотехники плата заменяет микросхему ПЗУ знакогенератора, позволяя, таким образом, рисовать в текстовом режиме относительно произвольные рисунки. Для установки платы нужно снять штатное ПЗУ с панельки и включить вместо него переходную колодку контроллера. А сам контроллер установить в любой свободный слот. Разработана для Агат-9, хотя, возможно, без переделок встанет и на семёрку. Аппаратно содержит три блока памяти:
После включения питания регистр управления сбрасывается в 0000 RC-цепочкой, общесистемный RESET платой игнорируется. Биты регистра управления (что будет, если записать "1"): 0 - разрешает отображение ОЗУ-знакогенератора на адреса C800..CFFF. ОЗУ при этом доступно как на чтение так и на запись ЦП. 1 - переключается между ПЗУ-знакогенератором, установленном на модуле ("0") и ОЗУ-знакогенератором ("1"). 2 - блокирует эмуляцию (т.е. модуль устанавливает состояние выходов на переходной колодке в Z-состояние независимо от других сигналов). Если другой ПЗУ/модуля нет - все символы будут восприняты системной платой как состоящие полностью из "1". 3 - не используется. Значение регистра задаётся записью произвольных данных в адреса C0nx, где n - номер слота + 8, в котором установлен контроллер, а x - новое значение регистра. Прочитать значение регистра нельзя. Буфер ОЗУ-знакогенератора: Т.е. чтобы символ с кодом 0x00 выглядел как символ "0" нужно сделать что-то примерно такое:
C0D1:0 Попытки чтения (кроме области C800..CFFF, если разрешено) игнорируются (т.е. выходной формирователь шины данных не выходит из Z-состояния), считанные значения должны быть такие же, как если бы модуль отсутствовал вообще (т.е. зависят от системной платы).
На сайте "Проект создания реплик ПЭВМ Агат" выложен проект ячейки программируемого знакогенератора.
* * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |