Пользователям о «Корвете». Журнал «Радио» №3/1989г., стр.43-46

 

 

ПОЛЬЗОВАТЕЛЯМ О «КОРВЕТЕ»

 

 

 

ОПЕРАТИВНАЯ ПАМЯТЬ И ГРАФИЧЕСКИЙ ДИСПЛЕЙ

Как мы уже отмечали в предыдущей статье, объем памяти «Корвета» может достигать 353 Кбайт; 96 Кбайт отводится под ПЗУ, 257 Кбайт занимает ОЗУ. При этом опера­тивная память делится следующим образом: 64 Кбайт - собственно ОЗУ микропроцессора, 192 Кбайт - ОЗУ графического дисплея (ГЗУ) и 1 Кбайт - память алфавитно-цифрового дис­плея. Кроме того, все регистры контроллеров и адаптеров, установленных на плате «Корве­та» (далее будем именовать их устройствами вода - вывода - УВВ), так же адресуются, как ячейки памяти. Итак, мы видим, что объем памяти ЭВМ существенно превышает 64 Кбайта, к которым процессор КР580ВМ80А может обра­щаться непосредственно.

 

Для того чтобы иметь возможность ра­ботать с такой памятью, имея всего 16 адрес­ных линий, в «Корвете» предусмотрено спе­циальное устройство — диспетчер памяти. Его задача формировать сигналы, разрешающие обращаться к тем или иным областям ОЗУ. Такой режим работы называется страничным.

 

Минимальный объем страницы памяти состав­ляет 256 байт, она может быть и больше­го размера, максимальные параметры которо­го строго не регламентируются. Обычно устрой­ства УВВ и ОЗУ алфавитно-цифрового дисплея сводятся на одну страницу объемом 2 Кбайт, а обращение к ГЗУ производится через окошко объемом 16 Кбайт.

 

Какие преимущества дает страничный режим работы ОЗУ в нашей ЭВМ?

 

Во-первых, вы можете легко изменять кар­ту памяти, перемещая страницы в адресном пространстве. Это бывает необходимо при ис­пользовании на ПЭВМ различных операцион­ных систем.

 

Во-вторых, вы можете отключать одни и под­ключать другие области памяти в ходе выполнения программы. Таким образом, напри­мер, создают электронный диск. В «Корвете» под электронный диск используется часть ГЗУ объемом 144 Кбайт.

 

В-третьих, бывают случаи, когда ваша програм­ма настолько велика, что не умещается в 64 Кбайтах памяти. В этом случае удается размещать отдельные функции  в других страницах ОЗУ и подключать их к основной программе по мере надобности.

 

 

 

 

Рассмотрим наиболее часто используемые конфигурации адресного пространства в «Корве­те». Первая из них это конфигурация, необ­ходимая для нормальной работы операцион­ной системы СР/М-80. В этом случае карта памяти составляется так, чтобы в нее вхо­дили ресурсы УВВ и часть ОЗУ. Под УВВ отво­дится область адресного пространства емкостью 2 Кбайт от адреса F800H до адреса FFFFH (буква Н в конце числа означает, что это число шестнадцатиричное). Остальное адресное про­странство емкостью 62 Кбайта отводится под ОЗУ, т, е. оно занимает адрес от 0 до F7FFH.

 

Другая часто используемая конфигурация относится к языку Бейсик. Поскольку Бейсик в основном располагается в ПЗУ, то нам необходимо включить его в карту памяти, которая будет иметь следующий вид: ПЗУ зай­мет в ней объем 24 Кбайт с адреса 0 по 5FFFH; ОЗУ — от 6000Н по F7FFH, а УВВ — с F800H по FFFFH.

 

Если мы хотим использовать Бейсик, вклю­чающий в себя графические функции, то нам необходимо подключить к адресному простран­ству ГЗУ. В этом случае используется следую­щая карта памяти: ПЗУ с объемом 24 Кбайт от 0 по 5FFFH; ОЗУ—от 6000Н по BEFFH; УВВ — от BF00H по BFFFH и ГЗУ — от С000Н по FFFFH.

 

Обратите внимание, что в последнем слу­чае в область УВВ не включена страница ОЗУ алфавитно-цифрового дисплея.

 

Теперь займемся вопросом: каким образом в «Корвете» происходит переключение карты памяти? В нем имеется довольно большое число устройств, подключенных к одним и тем же адресным линиям. Чтобы они не вступа­ли в «конфликт» при обращении к ним про­цессора, в машине предусмотрен дешифратор старшего байта адреса, который и выбирает то или иное устройство, причем только одно.

 

Этот дешифратор программируемый. Это оз­начает, что мы можем программно изменять те сочетания битов в старшем байте адре­са, которые приводят к выбору того или иного устройства. Другими словами, в этом дешифраторе имеется несколько наборов клю­чей, которые обеспечивают доступ к устрой­ствам «Корвета». Их может быть 32. Какой набор нам нужен в данном случае, определяет так называемый системный регистр.

 

Итак, чтобы изменить карту памяти, следует записать в системный регистр соответствующий номер. А где располагается этот регистр? Ведь мы говорили, что регистры «Корвета» так­же являются частью памяти машины и, сле­довательно, их адреса меняются при изме­нении карты памяти.

 

Так, например, системный регистр для конфи­гураций СР/М-80 и Бейсика, о которых мы вели речь выше, расположен по адресу FA7FH, для графического Бейсика — по адресу BF7FH.

 

Как мы видим, младший байт адреса систем­ного регистра одинаков для всех конфигу­раций. Отличается только старший байт, кото­рый определяет адрес страницы.

 

Таким образом, в «Корвете» адресуются раз­личные области памяти. Перейдем теперь к организации графического дисплея.

 

 

 

Прежде всего вспомним информационную емкость экранов. Для алфавитно-цифрового дис­плея она составляет 64Х16 символов. Емкость графического дисплея 512Х256 точек. Для того чтобы иметь возможность совмещать изобра­жение с графикой на одном экране, размер матрицы для изображения символов принят 8Х16 точек. Таким образом, мы видим, что количество точек на обоих дисплеях совпа­дает.

 

Раз мы изображаем на экране* дисплея 64Х16 символов, то для этого нам потре­буется 1 Кбайт памяти. ОЗУ А/Ц дисплея, в зависимости от конфигураци памяти, лежит на разных страницах, для наших примеров с СР/М и Бейсика — с адресом FC00H. В не­которых конфигурациях ОЗУ дисплея может быть вообще отключено. Для формирования изображения символа используется знакогене­ратор объемом 8 Кбайт, в котором хранятся два набора из 256 символов,

 

 

 

 

 

При отображении символов на экране иногда возникает необходимость видоизменять изобра­жение. Для этой цели обычно в алфавитно-цифровой дисплей передают вместе с кодом символа код его атрибута*. В «Корвете» атри­бут служит для инвертирования изображения символа. Поэтому А/Ц ОЗУ имеет емкость не 1 Кбайт, а 1К девятиразрядных слов. Девятый бит и является атрибутом.

 

Атрибут переписывается автоматически при записи кода символа А/Ц ОЗУ из специаль­ного триггера инверсии. Для работы с атрибутом и контроля вы­водимой на экран информации служат два регистра: регистр управления отображением (его адрес на странице периферийных регистров ЗАН) и регистр состояния атрибута видео­инверсии (адрес 381-1 на той же странице).

 

Периферийные регистры размещены на стра­нице с адресом FB00H для СР/М и Бейсика BF00H для графического Бейсика.

 

Назначение отдельных битов регистра управ­ления отображением приведено на рис. 1.

 

Перейдем теперь к работе графического дисплея. Это устройство намного сложнее. До­статочно сказать, что объем памяти у него составляет 192 Кбайт. Сначала разберемся с памятью. ГЗУ содержит три банка памяти по 64 Кбайт в каждом. Они образуют три плоскости изображения. Реальная точка на экране дисплея получается из комбинации трех бит из этих плоскостей. Такое построение поз­воляет получать изображение восьми раз­личных цветов. Поскольку число точек, однов­ременно изображенных на экране, равно 512Х • X 256= 16 Кбайт и, следовательно, три плоскости занимают 48 Кбайт, то в ГЗУ могут разместиться четыре страницы, т. е. четыре неза­висимых экрана. Их можно практически мгно­венно переключать, изменяя два младших бита в регистре управления изображением.

 

Графическая память включается в адресное пространство «Корвета», как страница объемом 16 Кбайт. Ее начальный адрес может быть в зависимости от конфигурации 4000Н или С000Н. Эта память доступна как для чтения, так и для записи.

 

Рассмотрим процесс обращения к видеопа­мяти. Допустим, что мы хотим зажечь точку на экране, не повредив ничего остального. Как это сделать, если просто работать с ви­деопамятью? Для этого необходимо проделать следующие операции:

 

1.        Переключить карту памяти и подклю­чить к адресному пространству требуемую плоскость ГЗУ.

2.        Считать байт, в котором находится бит, отвечающий за требуемую точку.

3.        Изменить с помощью логических опера­ций содержимое этого бита так, чтобы полу­чилась точка нужного цвета.

4.        Записать байт обратно в ГЗУ.

5.        Опять переключить карту памяти.

 

Эту последовательность операций необходимо проделать для каждой плоскости, поскольку точка на экране формируется битами трех плоскостей одновременно. Для уменьшения вре­мени доступа к графическому дисплею стало необходимым применить аппаратную поддержку процесса зажигания точек и уменьшить требуе­мое для этой цели число команд процессора.

Какие же имеются механизмы ускорения ра­боты с графикой? Мы располагаем двумя ре­жимами: цветовым и послойным. В цветовом режиме обращение происходит ко всем трем плоскостям одновременно, а в послойном — отдельно к каждой плоскости.

 

Рассмотрим цветовой режим как основной при работе с графическим дисплеем. Каким образом можно работать одновременно с тре­мя плоскостями? Для этого служит специаль­ный регистр цвета, структура которого приве­дена на рис. 2. Этот регистр расположен на той же странице, что и системный регистр. Его адрес на странице — BFH. Назначение разря­дов регистра цвета в цветовом режиме следую­щее: бит 0—не используется; биты 1—3— задают маску логического цвета при записи в ГЗУ; биты 4—6—при чтении; бит 7—опре­деляет цветовой режим.

 

Итак, прежде чем что-либо записывать в ГЗУ, мы должны внести в регистр цвета информа­цию о том, каким цветом мы хотим рисо­вать. При чтении изображений с экрана — анало­гичным образом записать в регистр маску цве­та чтения.

 

Познакомимся с процессом записи в ГЗУ. Предположим, что предстоит зажечь точку логического цвета номер 5. Это значит, что нам необходимо записать в регистр цвета двоич­ное число 1000101ХB. Здесь младший бит не имеет значения и обозначен как X, а буква В после числа означает, что оно двоичное. Биты 1—3 содержат двоичное представление числа 5 (5=101 В). Через маску логического цвета контроллеру графического дисплея передается, что в плоскость 0 будет записываться единица, в плоскость 1 — ноль, а в плоскость 2 — опять единица. Теперь мы выдаем байт от микропроцессора, в котором установлены биты единичного состояния, соответствующие тем точкам, которые нужно зажечь. При этом происходит следующее. Биты в ГЗУ, которые соответствуют зажигаемым точкам, изменят свое состояние. Остальные биты не изменят своего состояния. Таким образом, мы экономим по сравнению с процедурой непосредственного об­ращения к ГЗУ, описанной выше, сразу не­сколько операций микропроцессора. Таким образом, процесс рисования существенно убыст­ряется.

 

Кроме рисования, существует еще процедура закраски площади, ограниченной некоторой кри­вой заданного цвета. Здесь без чтения из ГЗУ не обойтись. Нам необходимо знать, дошли мы до границы или нет. Чтобы ускорить проце­дуру чтения из ГЗУ в «Корвете», также при­менен ряд аппаратных средств.

 

При процессе чтения из ГЗУ считывается одновременно по байту из каждой плоскости. Вслед за этим происходит аппаратное срав­нение цвета каждой из восьми точек с цве­товой маской, заданной в регистре цвета бита­ми 4—6.

 

В результате формируется байт, содержащий информацию о результатах сравнения. Теперь легко проводить процесс закраски объекта. Мы записываем в регистр цвета маску для чте­ния, соответствующую цвету закраски. После этого считывается байт, определяющий цвет вну­тренней области. Если он равен нулю, то, значит граница не достигнута и можно про­должать закраску. Применение такого способа приводит к тому, что скорость закраски до­стигает трех миллионов точек в секунду.

 

 

 

 

 

 

Рассмотрим теперь послойный режим обра­щения к ГЗУ. Назначение битов регистра цве­та приведены на рис. 3.

 

В данном случае бит 0—это маска значения бите, записываемого в ГЗУ; биты \—3—выбор плоскостей при записи; биты 4—6 — для чтения; бит 7 — послойный режим (должен быть запи­сан 0).

 

При этом, если мы хотим выбрать плоскость для записи, то соответствующий бит регистра цвета устанавливается на ноль, при чтении — на единицу.

 

Если для записи выбрано несколько плоско­стей, то информация будет записана во все выбранные плоскости. При одновременном счи­тывании из нескольких плоскостей информация объединяется.

 

В послойном режиме данные, поступающие из микропроцессора, также как и в цветовом, играют роль маски. Отличие заключается лишь в том, что маска в данном случае состоит из одного бита. Это младший бит регистра цвета. Допустим, что мы хотим в ГЗУ записать двоичное число 10011011В. При этом в соответ­ствующем байте в ГЗУ биты 7, 4, 3, 1, 0 примут значения младшего бите в регистре цвета, а биты 6, 5, 2 не изменят своего со­стояния.

 

Как видно из блок-схемы, приведенной на рис. 4 ( нажмите здесь – посмотреть рисунок в полный экран ), несмотря на то, что системы отобра­жения алфавитно-цифровой и графической ин­формации у «Корвета» независимы, мы можем информацию выводить на один экран. Это достигается благодаря наличию специального устройства, называемого просмотровой табли­цей. На нее подается последовательность би­тов из знакогенератора А/Ц дисплея и биты из трех плоскостей ГЗУ. При этом форми­руются четыре стандартных телевизионных сиг­нала R, G, В, I, которые подаются на видео­усилители монитора. Первые три сигнала (R — красный, G — зеленый, В — синий) определяют цвет точки. Интенсивность I позволяет накла­дывать поверх цветной точки изображение то­чек, формирующих символ. Таким образом, реально мы можем наблюдать на экране не 8, а 16 цветов. Отметим интересную осо­бенность цветного дисплея «Корвета». При ра­боте с ГЗУ мы имеем дело только с ло­гическими цветами от 0 до 7. Присваивание физического цвета логическому происходит в просмотровой таблице.

 

Просмотровая таблица представляет собой скоростное ОЗУ, имеющее емкость 16 ячеек по четыре бита каждая. Для нормальной работы просмотровой таблицы в нее нужно занести 16 четырехразрядных слов, определяю­щих 16 физических цветов. Заполнение про­смотровой таблицы происходит через специаль­ный регистр. Расположен он на той же стра­нице, что и системный регистр. Его отно­сительный адрес на странице — FBH. Назначение битов этого регистра следующее: биты 0—3 — номера ячеек просмотровой таблицы; биты 4— 7 — содержание ячейки.

 

При этом бит 0 соответствует плоскости 0 в ГЗУ, бит 1 — плоскости 1, бит 2— плоскости 2, в бит 3 соответствует А/Ц ЗУ.

 

Последнее, что нам осталось рассмотреть, это, какие источники видеосигнала имеются в «Корвете». Их три. К каждому можно, в прин­ципе, подключить телевизор.

 

Первый источник — это выход черно-белого алфавитно-цифрового дисплея. На этом выходе мы имеем стандартный видеосигнал, который можно подать на видеовход любого черно-белого телевизора. Второй источник — это вы­ход на цветной графический дисплей. Сюда поступают четыре сигнала с просмотровой таб­лицы и синхроимпульсы. К этому выходу подключается цветной монитор. Третий источник имеет на выходе, также как и первый, стандартный видеосигнал с той лишь разни­цей, что синхроимпульсы здесь смешаны с сигналом, поступающим с выхода четырехраз­рядного цифроаналогового преобразователя, на вход которого поступают сигналы RGBI с про­смотровой таблицы. Если подключить к этому источнику черно-белый телевизор, то можно бу­дет выводить на него черно-белую графическую информацию в градациях яркости.   

 

(Продолжение следует.)

 

С. АХМАНОВ, Н. РОЙ, .А. СКУРИХИН

 

 

Данная статья является частью серии статей, которые были  опубликованы в журнале «Радио» в 1989г., по ПК «Корвет». Продолжение серии вы можете найти в  журнале «Радио» №№6, 8, 10, 12 - 1989г.,  либо на сайте “Russian 8bit Computers” – http://www.rkgames.newmail.ru,  в разделе информации по ПК «Корвет».

Сканирование и обработка:  А. Болтаевский, 24.06.2000