Графический экран


Главная / ЭКВМ / Техническая информация / Функции

 

2. Графический экран

 

2.1. Описание графического экрана

Графический экран - это внутренняя структура ЭВМ размером 1024 байта, предназначенная для вывода объектов: графических изображений и текстовых сообщений. Вывод структуры на индикатор ЭВМ производится командой "К ГРФ".

Графический экран имеет 128 точек по горизонтали и 64 точки по вертикали. Начало координат расположено в левом верхнем углу индикатора. Экран монохромный, каждая точка экрана может быть установлена или сброшена. Установленная точка имеет тёмный цвет, сброшенная - светлый.

 

2.2. Регистры графического экрана

 

2.2.1. Начальные координаты объекта

Начальные координаты объекта определяют начальную точку экрана при выводе объектов и сообщений. Начальная координата X0 может принимать значения от 0 до 127, координата Y0 - от 0 до 63. Имеют доступ по записи и чтению.

 

2.2.2. Атрибуты вывода

Атрибуты вывода представляют собой байт, состояние битов которого определяет способ вывода объекта. Биты 1 и 0 определяют логическую функцию, которая производится над исходным изображением и выводимым объектом. При состоянии битов 00b (0) образ выводится поверх исходного изображения, при состоянии 01b (1) выполняется операция AND, при состоянии 10b (2) - операция OR, при состоянии 11b (3) - операция XOR. Установленный бит 2 (+4) байта атрибутов указывает на то, что графический объект перед выводом инвертируется. Имеет доступ по записи и чтению.

Соответствие содержимого байта атрибутов действиям при выводе объекта приведено в табл. 1.

Таблица 1

Байт Действие
0 Объект заменяет исходное изображение
1 Над каждой точкой объекта и исходного изображения проводится операция логического умножения - AND (конъюнкция, логическое "И")
2 Над каждой точкой объекта и исходного изображения проводится операция логического сложения - OR (дизъюнкция, логическое "ИЛИ")
3 Над каждой точкой объекта и исходного изображения проводится операция логического сложения по модулю 2 - XOR (исключающее "ИЛИ")
4 Объект инвертируется (над каждой точкой выполняется операция NOT, логическое "НЕ"), после чего заменяет исходное изображение
5 Объект инвертируется, после чего над каждой точкой объекта и исходного изображения проводится операция логического умножения - AND
6 Объект инвертируется, после чего над каждой точкой объекта и исходного изображения проводится операция логического сложения - OR
7 Объект инвертируется, после чего над каждой точкой объекта и исходного изображения проводится операция логического сложения по модулю 2 - XOR
Примечание. Другие значения байта атрибутов не используются.
 

2.2.3. Расстояние между символами

Определяет расстояние в точках между символами при выводе текстовых сообщений. Может принимать значения от 0 до 15. Имеет доступ по записи и чтению.

 

2.2.4. Номер шрифта

Определяет номер шрифта из стандартных наборов ЭВМ или загружаемого шрифта. Может принимать значения 0, 1, 2 или 254. Имеет доступ по записи и чтению.

Описание шрифтов стандартных наборов ЭВМ и структуры загружаемого шрифта приведено в приложении А.

 

2.2.5. Индексный регистр графического экрана

Может принимать значения от 0 до 1023. Имеет доступ по записи и чтению. Определяет смещение относительно начала структуры графического экрана в памяти ЭВМ.

 

2.3. Функции графического экрана

 

2.3.1. Программирование начальных координат объекта (R9000)

Запись и чтение значений начальных координат производится при обращении к регистру памяти с адресом 9000.

При выполнении команды записи значения регистров X и Y стека преобразуются в целые числа, ограничиваются до максимальных значений 127 и 63 соответственно и записываются в регистры X0 и Y0.

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

 

2.3.2. Программирование атрибутов вывода (R9001)

Запись и чтение значений атрибутов вывода производится при обращении к регистру памяти с адресом 9001.

При выполнении команды записи значение регистра X стека преобразуется в целое число, ограничивается до 7 и записываются в регистр атрибутов вывода.

При выполнении команды чтения стек поднимается, значение из регистра атрибутов вывода заносится в регистр X стека.

 

2.3.3. Программирование расстояния между символами (R9002)

Запись и чтение значения расстояния между символами производится при обращении к регистру памяти с адресом 9002. Функция выполняется аналогично функции программирования атрибутов вывода. Число ограничивается до значения 15.

 

2.3.4. Программирование номера шрифта (R9003)

Запись и чтение номера шрифта производится при обращении к регистру памяти с адресом 9003. Функция выполняется аналогично функции программирования атрибутов вывода. Число ограничивается до значения 255.

 

2.3.5. Программирование индексного регистра графического экрана (R9004)

Запись и чтение данных в индексный регистр графического экрана производится при обращении к регистру памяти с адресом 9004. Функция выполняется аналогично функции программирования атрибутов вывода. Число преобразуется в целое и ограничивается до значения 1023.

 

2.3.6. Вывод данных в графическую область памяти (R9005, R9006)

Структура графического экрана ЭВМ представляет собой непрерывный байтовый буфер длиной 1024 байта. На экране ЭВМ буфер отображается восемью строками, длиной по 128 байт. Порядок следования байтов - от левого верхнего края экрана младшим битом вверх.

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

Вывод данных в экранный буфер и чтение производится при обращении к регистрам памяти с адресами 9005 и 9006.

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

При обращении к регистру памяти 9006 дополнительно выполняется постинкрементирование - автоматическое увеличение содержимого индексного регистра графического экрана на единицу. При достижении максимального значения содержимое индексного регистра обнуляется.

 

2.3.7. Инициализация графического экрана (R9010)

Функция предназначена для проведения начальной инициализации структуры графического экрана. Операция производится при выполнении команды записи в регистр памяти с адресом 9010. Значение регистра X стека определяет вид инициализации. При записи числа 0 буфер заполняется нулями (пустой экран), при записи числа 1 - значениями 0FFh (черный экран).

При записи числа 2 буфер заполняется нулями, одновременно с этим начальные координаты X0, Y0 обнуляются, устанавливается шрифт номер 0, расстояние между символами 1 точка, атрибуты вывода 0. При записи числа 3 буфер заполняется единицами, одновременно с этим начальные координаты X0, Y0 обнуляются, устанавливается шрифт номер 0, расстояние между символами 1 точка, атрибуты вывода 4.

После выполнения функции регистры стека не изменяются.

Операция чтения из регистра памяти с указанным адресом не изменяет стек ЭВМ.

 

2.3.8. Вывод точки (R9011)

Функция предназначена для вывода на графический экран одной точки. Операция производится при записи в регистр памяти с адресом 9011. Значение регистра X стека определяет координату точки по оси X, значение регистра Y стека определяет координату точки по оси Y. Значения регистров стека после выполнения функции не изменяются. Изображение на экране формируется с учетом установленных атрибутов вывода.

Операция чтения из регистра памяти с указанным адресом заносит в регистр X стека состояние точки на графическом экране (0 - сброшена, 1 - установлена) и поднимает стек ЭВМ.

 

2.3.9. Вывод линии (R9012)

Функция предназначена для вывода на графический экран линии (отрезка) толщиной в одну точку. При выводе линии используется алгоритм Брезенхема для восьмисвязной развертки.

Начальная координата задается в регистрах X0 и Y0, конечная координата - в регистрах X и Y стека. Операция производится при выполнении команды записи в регистр памяти с адресом 9012. Операция не выполняется, если хотя бы одно из значений координат находится вне области экрана. Изображение на экране формируется с учетом установленных атрибутов вывода. Значения регистров стека после выполнения функции не изменяются.

Операция чтения из регистра памяти с указанным адресом не изменяет стек ЭВМ.

 

2.3.10. Вывод прямоугольника (R9013)

Функция предназначена для вывода на графический экран прямоугольника. Начальная координата задается в регистрах X0 и Y0, размер прямоугольника по координатам - в регистрах X и Y стека соответственно. Операции производится при выполнении команды записи в регистр памяти с адресом 9013. Значения регистров стека после выполнения функции не изменяются. Изображение на экране формируется с учетом установленных атрибутов вывода.

Операция чтения из регистра памяти с указанным адресом не изменяет стек ЭВМ.

 

2.3.11. Вывод рамки (R9014)

Функция предназначена для вывода на графический экран прямоугольной рамки. Начальная координата задается в регистрах X0 и Y0, размер рамки по координатам - в регистрах X и Y стека соответственно. Операция производится при выполнении команды записи в регистр памяти с адресом 9014. Операция не выполняется, если задан размер рамки менее трёх точек по любой из координат или объект выходит за границы экрана.

Значения регистров стека после выполнения функции не изменяются. Изображение на экране формируется с учетом установленных атрибутов вывода.

Операция чтения из регистра памяти с указанным адресом не изменяет стек ЭВМ.

 

2.3.12. Вывод графического образа из памяти программ (R9015)

Функция предназначена для вывода на экран графического образа из памяти программ ЭВМ. Начальная координата задается в регистрах X0 и Y0, размер образа в точках по координатам X и Y задается в двух первых байтах изображения.

Операция производится при выполнении команды записи в регистр памяти с адресом 9015. В регистре X стека задается начальный адрес графического образа в памяти программ.

Первые два байта графического образа задают размер изображения в точках по координатам X и Y соответственно, остальные байты предназначены для формирования изображения.

Изображение формируется по столбцам сверху-вниз слева-направо. Количество байт в графическом образе определяется как: m*([n/8]+1)+2,
где: m - размер изображения по горизонтали, координата X,
n - размер изображения по вертикали, координата Y,
квадратными скобками обозначена операция выделения целой части.

Не используемые биты в изображении могут быть установлены произвольным образом.

Пример соответствия графического образа и изображения приведен на рис. 1.

МК-152 Соответствие графического образа и изображения

Рис. 1. Соответствие графического образа и изображения.

Последовательность байт для изображения справа: 05h, 0Bh, 04h, 01h, 06h, 03h, 0FFh, 07h, 06h, 03h, 04h, 01h. Два первых байта задают ширину изображения 5 точек и высоту 11.

Значения регистров после выполнения функции не изменяются. Изображение на экране формируется с учетом установленных атрибутов вывода.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.

 

2.3.13. Вывод графического образа из памяти данных (R9016)

Функция предназначена для вывода на экран графического образа из регистров байтовых данных (адреса от 1000 до 8167). Начальная координата задается в регистрах X0 и Y0.

Операция производится при выполнении команды записи в регистр памяти с адресом 9016. В регистре X стека задаётся начальный адрес (номер регистра) графического образа в памяти данных.

Формат графического образа соответствует приведенному выше.

Значения регистров после выполнения функции не изменяются. Изображение на экране формируется с учетом установленных атрибутов вывода.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.

 

2.3.14. Вывод символа (R9020)

Функция предназначена для вывода на экран графического образа символа. Начальная координата задается в регистрах X0 и Y0. В регистре X стека задаётся код выводимого символа. Операция производится при выполнении команды записи в регистр памяти с адресом 9020, при этом формируется следующая последовательность операций:

  • по коду символа находится графический образ в таблице шрифта знакогенератора ЭВМ, задаваемой регистром номера шрифта;
  • образ символа выводится в графический экран, при этом изображение формируется с учетом установленных атрибутов вывода;
  • начальная координата в регистре X0 увеличивается на значение ширины символа;
  • выводится пустой прямоугольник, высота которого (размер по Y) соответствует высоте выводимого символа, ширина (размер по X) определяется значением, записанным в регистр, определяющий расстояние между символами, при выводе учитываются атрибуты;
  • начальная координата в регистре X0 увеличивается на ширину пустого прямоугольника.

Таким образом, после выполнения функции содержимое регистра X0 указывает на место вывода следующего символа.

При выполнении функции другие регистры и регистры стека не изменяются. Функция не выполняется, если в установленной таблице шрифта отсутствует символ с заданным кодом.

Операция чтения из регистра памяти по указанному адресу не изменяет стек ЭВМ.

 

2.3.15. Вывод строки символов из памяти программ (R9021)

Функция предназначена для вывода на графический экран строки символов из памяти программ ЭВМ. Начальная координата задается в регистрах X0 и Y0.

В регистре X стека задаётся адрес начала строки в памяти программ (от 0 до 9999). Операция производится при выполнении команды записи в регистр памяти с адресом 9021, при этом в экранную область последовательно выводятся графические образы символов, коды которых последовательно записаны в памяти программ. Правила вывода символов аналогичны указанным выше. Вывод заканчивается при считывании из памяти программ числа 0 или 255 (0FFh). Символ с кодом 0 на экран этой функцией не выводится.

Операция чтения из регистра памяти по указанному адресу не изменяет стек ЭВМ.

 

2.3.16. Вывод строки символов из памяти данных (R9022)

Функция предназначена для вывода на графический экран строки символов из регистров байтовых данных (адреса от 1000 до 8167). Начальная координата задается в регистрах X0 и Y0.

В регистре X стека указывается адрес начала строки (номер регистра) в памяти данных.

Операция производится при выполнении команды записи в регистр памяти с адресом 9022, при этом в экранную область последовательно выводятся графические образы символов, коды которых последовательно записаны в памяти данных ЭВМ. Правила вывода строки символов аналогичны приведенным выше.

Операция чтения из регистра памяти по указанному адресу не изменяет стек ЭВМ.

 

2.3.17. Вывод числа с естественной или плавающей запятой (R9023)

Функция предназначена для вывода на графический экран числа в естественной форме или с плавающей запятой. Форма вывода определяется автоматически в зависимости от значения числа. При представлении в форме с плавающей запятой значения мантиссы и порядка числа разделяются символом "E". Начальная координата вывода задается в регистрах X0 и Y0.

Выводимое число записывается в регистр X стека. Операция производится при выполнении команды записи в регистр памяти с адресом 9023, при этом выводимое число преобразуется в строку символов, образы которых последовательно выводятся на экран. Правила вывода строки символов аналогичны приведенным выше.

Операция чтения из регистра памяти по указанному адресу не изменяет стек ЭВМ.

 

2.3.18. Вывод числа в форматированном виде (R9024)

Функция предназначена для вывода на графический экран числа в форматированном виде. Начальная координата вывода задается в регистрах X0 и Y0.

Значение выводимого числа задается в регистре X стека, в регистре Y - количество цифр в целой части числа (от 1 до 8), в регистре Z - количество цифр в дробной части (от 0 до 7). Дополнительно одно знакоместо выделяется для вывода знака числа. Если число отрицательно, выводится минус, если положительно - пробел. Знак всегда выводится перед первой цифрой числа, остальные знакоместа заполняются пробелами.

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

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

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

Операция чтения из регистра памяти по указанному адресу не изменяет стек ЭВМ.

 

2.3.19. Прокрутка экрана (R9007, R9008)

Прокрутка экрана (смещение изображения) производится при выполнении команды записи в регистрам памяти с адресом 9007, 9008.

При записи чисел от 1 до 7 изображение смещается вверх на соответствующее количество строк (одна строка - 8 точек). Освободившееся поле заполняется нулями, если число подавалось в регистр с адресом 9007, или единицами, если число подавалось в регистр с адресом 9008. При записи числа 0 действие не производится, при записи числа 8 и более, экран очищается полностью.

Значение регистров стека после выполнения функции не изменяется.

Операция чтения из регистра памяти данных по указанному адресу не изменяет стек ЭВМ.

 

2.3.20. Адрес загружаемого шрифта (R9009)

Запись и чтение адреса начала структуры загружаемого шрифта производится при обращении к регистру памяти с адресом 9009. Число преобразуется в целое и ограничивается до значения 9999.

Для использования загружаемого шрифта в регистр номера шрифта (см. п. 2.3.4) следует записать значение 254.


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)