Intel 8275/Документация

Материал из Emuverse
Данный материал защищён авторскими правами!

На использование данного материала получено специальное разрешение правообладателя. Дальнейшее распространение допустимо только с его письменного разрешения.

Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей.

Автор: Вадим Кудрявцев

Источник: Виртуальный компьютерный музей. Проект Эдуарда Пройдакова.

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

В серии К580 выпускался контроллер алфавитно-цифрового дисплея КР580ВГ75.

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

Основные возможности контроллера алфавитно-цифрового дисплея КР580ВГ75 таковы:

  • программируемый экранный и строчный формат;
  • 11 графических символов;
  • 4 возможных вида курсора;
  • распознавание и запоминание положения светового пера;
  • 2 символьных буфера;
  • программируемый режим прямого доступа к памяти (ПДП);
  • 40-выводной DIP-корпус.
Рис. 1. Структура микросхемы КР580ВГ75

Назначение выводов контроллера

LC0-LC3ВыходыLine Count (счетчик строк). Этот выход используется для адресации номера строки отображаемого символа в знакогенераторе
DRQВыходDMA Request (Запрос ПДП)
/DACKВходDMA Acknowledge (Подтверждение ПДП)
HRTCВыходHorizontal Retrace (обратный ход по строкам) Выходной сигнал, который является активным во время запрограммированного обратного хода по строкам. В это время VSP=1 и LTEN=0
VRTCВыходVertical Retrace (обратный ход по кадрам) Выходной сигнал, который является активным во время запрограммированного обратного хода по кадрам. В это время VSP=1 и LTEN=0
/RDВходRead (Читать). Управляющий сигнал, позволяющий прочитать регистры
/WRВходWrite (Запись). Этот управляющий сигнал показывает запись команды в регистр управления или запись данных в счетчик строк во время цикла ПДП
LPENВыходLight Pen (Световое перо). Входной сигнал системы управления экраном, позволяющий распознать световое перо
DB0-DB7Входы/выходыДвунаправленная шина данных с тремя состояниями
LA0,LA1ВыходыLine Attributes Codes (Коды атрибутов строк). Эти коды могут быть декодированы при помощи внешней логики и использованы для отображения символов псевдографики
LTENВыходLight Enable (Разрешение выхода видеосигнала). Выходной сигнал для разрешения видеосигнала
RVVВыходReverse Video (Инвертирование видеосигнала)
VSPВыходVideo Suppression (Видеоподчеркивание) Выходной сигнал для коммутации видеосигнала. Этот сигнал является активным:

— во время обратного хода по строкам и кадрам;
— во время строк сверху и снизу символа, если такие запрограммированы;
— если распознаны конец строки или экрана;
— если происходит процесс ПДП;

— регулярно (1/16 частоты кадров для курсора, 1/32 частоты кадров для управления символами и полями)
GPA1, GPA2ВыходGeneral Purpose Attribute Codes (Коды атрибутов общего назначения)
HLGTВыходHighlight (Повышенная яркость) Выходной сигнал для увеличения яркости отдельных символов
IRQВыходInterrupt Request (Запрос прерывания)
CCLKВходCharacter Clock (Тактовые импульсы). Эти тактовые импульсы образуются с помощью внешней логики
CC0-CC6ВходChip Select (Выбор микросхемы)
A0ВходPort Address (Адрес порта) A0=0 выбирает регистр параметров, A0=1 выбирает регистр статуса или команд

Программирование

В КР580ВГ75 имеются два программируемых регистра: регистр команд (CREG) и регистр параметров (PREG), а также регистр статуса (SREG). Регистр команд доступен только по записи, регистр статуса — только по чтению. Указанные регистры адресуются следующим образом:

A0ОперацияРегистр
0ЧтPREG
0ЗпPREG
1ЧтSREG
1ЗпCREG

Контроллер ожидает приема команды и следующей за ней последовательности от 0 до 4 параметров в зависимости от команды. Если к приему следующей команды не были приняты все параметры, устанавливается флаг статуса, который указывает на некорректную команду.

Список команд

Набор команд контроллера состоит из восьми команд:


КомандаЧисло байтов-параметров
1. Сброс4
2. Старт дисплей0
3. Стоп дисплей0
4. Читать световое перо2
5. Загрузить курсор2
6. Разрешить прерывание0
7. Запретить прерывание0
8. Установить счетчик0

1. Сброс

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЗп100000000
ПараметрыЗп0SHHHHHHH
 Зп0VVRRRRRR
 Зп0UUUULLLL
 Зп0MFCCZZZZ

Параметры:

SФункция
0Нормальные символы
1Недоступные (закрытые) символы


HHHHHHHHЧисло символов в строке
000000001
000000012
000000103
........ 
1001111180
10100000 
........Не определено
11111111 


VVЧисло строк в кадровом синхроимпульсе
001
012
103
114


RRRRRRЧисло строк на экране
0000001
0000012
0000103
   :   
11111164


UUUUВысота линии подчеркивания
00001
00012
00103
 :   
111116


LLLLЧисло горизонтальных линий в строке (высота символа в пикселах)
00001
00012
00103
 :   
111116


CCФормат курсора
00Мигающий блок-символ*
01Мигающий штрих под символом
10Немигающий блок-символ*
11Немигающий штрих под символом

(*) Если экран темный и символы светлые, то в позиции курсора экран светлый и символы темные


ZZZZЧисло символов в строчном синхроимпульсе
00002
00014
00106
 :   
111132


2. Старт дисплей (начать отображение)

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЗп1001SSSBB


SSSЧисло тактов между запросами ПДП
0000
0017
01015
01123
10031
10139
11047
11155


BBЧисло циклов ПДП в течение одного сеанса
001
012
104
118

Если разрешены прерывания со стороны контроллера, то начинаются запросы ПДП; если разрешен видеосигнал, то устанавливаются флаги разрешения прерывания и разрешения видео в регистре статуса.

3. Стоп дисплей (запретить отображение)

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЗп100100000

Видеосигнал запрещен. Строчные и кадровые импульсы присутствуют, сбрасывается флаг разрешения видео в регистре статуса. Требуется ввести команду начала отображения для возобновления отображения на экране.

4. Читать световое перо

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЗп101100000
ПараметрыЧт0 Позиция символа в строке
 Чт0 Номер строки

Контроллер определяет положение светового пера в следующих двух циклах чтения регистра параметров. Флаги регистра статуса не изменяются.

5. Загрузить курсор

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЗп110000000
ПараметрыЗп0Позиция курсора в строке
 Зп0Номер строки

Контроллер загружает два байта-параметра в регистр положения курсора. Флаги регистра статуса не изменяются.

6. Разрешить прерывания

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЗп110100000

Устанавливается флаг разрешения прерывания регистра статуса. Прерывания разрешены.

7. Запретить прерывание

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЗп111000000

Сбрасывается флаг разрешения прерывания регистра статуса. Прерывания невозможны.

8. Установить счетчик

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЗп111100000

Устанавливается внутренний счетчик в соответствии с положением курсора в верхнем левом углу. Для этой операции зарезервированы два тактовых импульса.

Построение регистра статуса

 ОперацияA0Данные
   Ст. б.      Мл. б.
КомандаЧт10IEIRLPICVEDUFO

IE (Interrupt Enable) — устанавливается и сбрасывается после команд разрешения и запрета прерываний. Также устанавливается после команды разрешения отображения и сбрасывается после команды сброс.

IR (Interrupt Request) — этот флаг устанавливается в начале последней строки на экране при условии, что установлен флаг разрешения прерывания. Сбрасывается после чтения регистра статуса.

LP — этот флаг устанавливается, если на входе светового пера присутствует активный уровень и загружен регистр светового пера. Сбрасывается после чтения регистра статуса.

IC (Improper Command) — этот флаг устанавливается, если количество параметров для команды велико или мало. Сбрасывается после чтения регистра статуса.

VE (Video Enable) — этот флаг показывает, что видеооперации с экраном разрешены. Устанавливается после команды разрешения отображения и сбрасывается после команды сброс.

DU (DMA Underrun) — этот флаг устанавливается при потере данных во время процесса ПДП. В этом случае процесс ПДП прерывается и экран затемняется после кадрового синхроимпульса. Сбрасывается после чтения регистра статуса.

FO (FIFO Overrun) — этот флаг устанавливается при переполнении буфера FIFO. Сбрасывается после чтения регистра статуса.

Функционирование

Управляющие символы из видеопамяти поступают в контроллер в виде восьмибитных символов. Однако отображаемый символ определяется только младшими семью битами. Это позволяет иметь знакогенератор только со 128-ю символами. Старший бит имеет специальную функцию: он определяет режим отображения — нормальное отображение (ст. б.=0); псевдографика или специальные коды (ст. б.=1). Существует два типа кодов управления символами: символьные атрибуты и атрибуты поля.

Под управлением выходных сигналов LA0, LA1, VSP и LTEN с помощью символьных атрибутов могут быть отображены псевдографические символы. Эти символы могут при помощи программирования (аналогично курсору) мигать или иметь повышенную яркость свечения. Частота мигания равна частоте кадров, деленной на 32. Повышенная яркость свечения активируется сигналом логической 1 на выходе HGLT контроллера.

Структура символьного атрибута

Ст. б.      Мл. б.
11CCCCBH
   миганиеПовышенная яркость


Символы псевдографики

Код символа CCCC ВыходыСимвол
  LA1LA0VSPLTEN 
0000-1-0010+
 -2-1000 
 -3-0100 
      верхний левый угол
0001-1-0010+
 -2-1100 
 -3-0100 
      верхний правый угол
0010-1-0010+
 -2-1000 
 -3-0010 
      нижний левый угол
0011-1-0010+
 -2-1100 
 -3-0010 
      нижний правый угол
0100-1-0010-
 -2-0001 
 -3-0100 
      верхнее ответвление
0101-1-0010¦
 -2-1100 
 -3-0100 
      правое ответвление
0110-1-0010+
 -2-1000 
 -3-0100 
      левое ответвление
0111-1-0100-
 -2-0001 
 -3-0010 
      нижнее ответвление
1000-1-0010-
 -2-0001 
 -3-0010 
      горизонтальная линия
1001-1-0100¦
 -2-0100 
 -3-0100 
      вертикальная линия
1010-1-0100+
 -2-0001 
 -3-0100 
      пересечение
1011-1-0000не определено
 -2-0000 
 -3-0000 
1100-1-0010специальный код
 -2-0010 
 -3-0010 

Коды 1101, 1110 и 1111 запрещены.

Мигание активно при B=1, повышенная яркость — при H=1.

Указание относительного положения символа:

−1- над линией подчеркивания

−2- на линии подчеркивания

−3- под линией подчеркивания

Специальные коды

Специальные коды применяются для уменьшения затрат на память программ или на управление процессом ПДП.

Ст.б.      Мл.б.
111100SS


SSФункция
00Конец строки
01Конец строки, стоп ПДП
10Конец экрана
11Конец экрана, стоп ПДП

Структура «атрибута поля»

Ст.б.      Мл.б.
10URGGBH
  • H=1 повышенная яркость
  • B=1 мигание
  • U=1 инверсия видео
  • GG — GPA1, GPA0

Формат экрана

КР580ВГ75 может быть запрограммирован в режиме от 1 до 80 символов в строке и от 1 до 64 строк в кадре. Контроллер позволяет организовать чересстрочное отображение информации, при котором отображаются 1, 3 и т. д. строки, при этом 2, 4, и т. д. строки затемняются.

Формат символа

Высота символа программируется от 1 до 16. Счетчик строк может быть запрограммирован в двух режимах. В первом режиме (MODE 0) содержимое счетчика соответствует номеру строки, во втором (MODE 1) — всегда на единицу меньше. Режим MODE 0 используется со знакогенераторами, в которых адрес начинается с единицы и заканчивается нулем; режим MODE 1 — со знакогенераторами, в которых адрес начинается с нуля.

Положение линии подчеркивания также программируется (по высоте от 0 до 15). Если линия подчеркивания в строке установлена выше 7 (ст. б.=1), верхняя и нижняя строки затемняются. Если линия подчеркивания установлена выше высоты символа, она не видна.

Пример программирования

В одноплатном компьютере «Радио-86РК», описанном в журнале «Радио», контроллер программируется следующим образом.

1. Команда сброс.
A0ОперацияРегистрДанныеКомментарий
1ЗпCREG00000000 (00H)Команда сброс
0ЗпPREG01001101 (4DH)1-й параметр: нормальные символы, 80 символов в строке
0ЗпPREG00011101 (1DH)2-й параметр: 1 строка в кадровом синхроимпульсе, 30 строк на экране
0ЗпPREG10011001 (99H)3-й параметр: высота линии подчеркивания — 10, высота символа — 10
0ЗпPREG10010011 (93H)4-й параметр: режим MODE1, формат курсора -мигающий штрих под символом, 8 символов в строчном синхроимпульсе
2. Команда запуска изображения на экране.
A0ОперацияРегистрДанныеКомментарий
1ЗпCREG00100111 (27H)Команда начать отображение: 7 тактов между запросами ПДП, 8 циклов ПДП за один сеанс
3. Теперь постоянно читаем регистр статуса и ждем, когда флаг IR, означающий начало последней строки, установится в 1.
A0ОперацияРегистрДанныеКомментарий
1ЧтSREG Читаем регистр статуса в цикле и выходим из него по условию IR=1
4. Теперь за время хода последней строки надо успеть настроить контроллер ПДП, но это уже другая история.