/BIBLIOTEKA/DVKTXT/ Графические функции ДВК-4, реализуемые программой LOAD. М О С К В А 1 9 8 8 1. Введение. Контроллер цветного графического дисплея (КЦГД) ДВК-4 является программно-управляемым устройством. Управляющая программа КЦГД, размещенная в ПЗУ КР1801РЕ2-181, реализует алфавитно-цифровой дисплей, совместимый по системе команд с дисплеями типа VT-52, VT-100. Имеется возможность расширить функции, реализуемые КЦГД, за счет загрузки дополнительного ПО из ДВК-4. Одним из способов выполнить это является запуск специальной программы LOAD, которая производит дозагрузку специальных графических программ. После отработки программы дополнительное ПО будет размещено в ОЗУ КЦГД и подсоединится к размещенному в ПЗУ, при этом произойдет расширение системы команд в режиме VT-52. Ниже описаны команды, их формат и пояснения по выполняемым функциям. Отметим, что так как ПО КЦГД находится в стадии отработки, в дальнейшем возможно изменение форматов команд, реализуемых с помощью LOAD. Нижеперечисленные команды будут работать с программой LOAD версии от 20.06.88г. 2. Общие замечания. Описанные ниже команды распознаются и отрабатываются, когда дисплей находится в режиме совместимости (VT-52). Если остальное ПО требует наличия расширенной (VT-100) системы команд, то перед подачей графических команд следует перевести дисплей в режим совместимости ( подачей команды ESC [ ? 2 l ), передать графическую команду, затем вернуться в расширенный режим командой ( ESC < ). Графические команды всегда начинаются с кодов ESC (33(8)) M (115(8)), за ними идет однобайтовый код команды, за ним координаты или параметры, задающие атрибуты графических примитивов. Коды команд, параметры и координаты кодируются так, чтобы символы, их выражающие, находились в диапазоне 40(8) - 177(8). Система команд позволяет отображать на экране графическую информацию в режиме среднего разрешения КЦГД, т.е. в формате 400 точек в строке, всего 240 строк. Каждая точка может иметь 16 цветов из палитры 64 цвета. С помощью системы команд можно производить построение следующих графических примитивов: - отрезок; - точка; - дуга; - символы КОИ-7 Н0,Н1. Отрезки, точки и дуги могут выводиться со следующими атрибутами: - цвет; - тип линии. Для символов определены атрибуты: - цвет; - ориентация; - размер. Кроме построения примитивов система команд позволяет выполнять операции: - установка размеров и положения поля вывода на экран; - очистка текущего поля вывода; - выбор типа линии; - выбор цвета; - установка представления цвета; - выбор ориентации и размеров символов; - выбор режима вывода; - закраска гранично-определенной области. Так как одновременно на экране может производиться вывод алфавитно-цифровой и графической информации в разных режимах разрешения, возможно искажение графической информации при попытке вывода поверх нее алфавитно-цифровой, чтобы минимизировать проблемы "интерференции" разных режимов, следует либо отвести на экране место для алфавитно-цифровой информации и держать алфавитно-цифровой курсор в этой области ( или вообще отключить его ), либо отвести под графику часть экрана, скажем 200 строк, оставив под алфавитно-цифровую информацию 40 строк ( 4 а-ц строки ). При этом , чтобы не было сдвигов графики при скроллинге ( рулоне ) а-ц информации, в начале нужно назначить зону рулона на эти строки. Если сделать именно так, то а-ц вывод с возможным рулоном не затронет графическую информацию. Зону рулона можно сделать от 2 до 24 строк и лучше всего размещать ее в нижних по экрану строках. 3. Кодирование параметров и координат Целочисленные, неотрицательные координаты, задающие положение примитивов, кодируются двухбайтовой последовательностью по следующему алгоритму: 1-й байт : ((число) div 64.) + 32. 2-й байт : ((число) mod 64.) + 32. Числа десятичные, а операции div и mod соответственно целочисленное деление и взятие остатка от деления. Целочисленные неотрицательные параметры, задающие атрибуты, кодируются одним байтом по формуле: байт : (число) + 32. Код графического символа - один байт из КОИ-7 Н0,Н1, коды 16(8) и 17(8) задают переходы межу кириллицей и латынью, управляющие коды никак не отрабатываются. 4. Задание поля вывода. Формат: ESC (33(8)) M (115(8)) ' (47(8)) Текущее поле вывода задает прямоугольник с координатами X,Y начала - левый нижний угол, X,Y конца - правый верхний. Вся дальнейшая графическая информация будет выводиться только в этот прямоугольник с отсечением по его границам. Вначале пределы такие: 0,0,399.,239. 5. Выбор цвета. Формат: ESC (33(8)) M (115(8)) ! (41(8)) <номер цвета> Параметр <номер цвета> 0 - 15. задает текущий цвет, с которым будут выводиться все следующие примитивы. Цвет номер 15. мерцает поочередно цветами 5 и 10. 6. Установка представления цвета. Формат: ESC (33(8)) M (115(8)) " (42(8)) <номер цвета><значение> Параметр <номер цвета> выбирает цвет, значение которому из палитры 64 цветов задает параметр <значение> из диапазона 0 - 63. С момента получения команды цвет указанного номера будет выводиться заданным значением, которое является кодировкой наличия и интенсивновти первичных цветов (красного R, зеленог G, и синего B) в цвете. Число, представленное в <значение> кодирует первичные цвета по правилу BBGGRR, где наличие и интенсивность первичного цвета задаются единицами в соответствующих позициях. Пример: яркий красный - 3, яркий синий - 60(8). Не имеет смысла задавать значение 15-му цвету, т.к. он мерцает между 5 и 10. 7. Выбор режима вывода. Формат: ESC (33(8)) M (115(8)) $ (44(8)) <номер режима> Параметр <номер режима> из диапазона 0 - 3 задает правило, по которому будут замещаться номера цветов в графической памяти КЦГД при выводе в нее примитивов. Результат взаимодействия будет следующим: параметр: 0 <номер цвета> XOR <номер цвета в памяти> 1 <номер цвета> BIC <номер цвета в памяти> 2 <номер цвета> BIS <номер цвета в памяти> 3 <номер цвета> где операции XOR, BIC, BIS есть соответственно исключающее ИЛИ, маскирование, ИЛИ. Дважды примененная операция XOR не меняет содержимого памяти. Операция BIS накладывает новый цвет на предыдущий, а BIC вытирает его из предыдущего. В большинстве случаев имеет смысл пользоваться режимом замещения (3). 8. Очистка поля с указанным режимом вывода. Формат: ESC (33(8)) M (115(8)) & (46(8)) <режим вывода> Эта команда производит вывод во все точки поля вывода текущего цвета по закону, установленному <режимом вывода>. Праметр действует только на время выполнения этой команды и имеет такой же смысл, как вышеприведенный. 9. Выбор типа линии. Формат: ESC (33(8)) M (115(8)) # (43(8)) <тип линии> Примитивы отрезок, дуга и точка графика выводятся с выбранным типом линии. Возможны 8 различных типов: сплошная (0), точечная (1), штриховая, штрихпунктирная и т.д. В начале установлен тип сплошной линии. 10. Отрезок. Формат: ESC (33(8)) M (115(8)) пробел (40(8)) Производится вывод с возможным отсечением отрезка выбранного цвета, режима, и типа линии. 11. Точка графика. Формат: ESC (33(8)) M (115(8)) / (57(8)) В координаты X,Y выводится точка соответствующего цвета, режима и типа линии, что дает возможность воспроизводить поточечный вывод различных кривых. 12. Точка. Формат: ESC (33(8)) M (115(8)) ( (50(8)) Вывод точки текущим цветом и режимом. 13. Дуга. Формат: ESC (33(8)) M (115(8)) % (45(8)) Построение дуги текущим цветом режимом и типом линии. Радиус задается двухбайтовой последовательностью аналогично координатам, R >= 2. XS,YS - координаты начала, XT,YT - координаты конца, XC,YC - центра. CW = 0 - вывод по часовой стрелке от начала к концу, CW = 1 - против. 14. Выбор размера символа. Формат: ESC (33(8)) M (115(8)) * (52(8)) X и Y из диапазона 1-15. задают множители базового размера символа 8*10. точек. 15. Выбор ориентации символа. Формат: ESC (33(8)) M (115(8)) + (53(8)) <ориентация> Параметр <ориентация> из диапазона 0 - 7 задает угол поворота символа относительно оси X с шагом 45 градусов: 0 - нормальная ориентация, 4 - перевернутый символ. 16. Вывод символа. Формат: ESC (33(8)) M (115(8)) ) (51(8)) <код символа> Вывод символа выбранного размера, ориентации, цвета, режима вывода с возможным отсечением по границам поля вывода. 17. Заполнение гранично-определенной области. Формат: ESC (33(8)) M (115(8)) . (56(8)) Производится заполнение замкнутого контура, нарисованного текущим цветом, в режиме замещения текущим же цветом. X,Y - координаты произвольной точки внутри контура. Замечание: эта команда будет заменена в первую очередь. 18. Совместимость клавиатур ДВК-3 и ДВК-4. Программа LOAD модифицирует отработку клавиш в режиме а-ц дисплея так, чтобы обеспечить совместимость с предыдущими моделями ДВК. При этом начинают работать следующие клавиши: Клавиша: Выдаваемый код: ОТМЕН СУ/U (25(8)) ВЫХОД СУ/C (3(8)) ПМ ESC a(33(8) 141(8)) ИСП ESC b(33(8) 142(8)) Ф17 ESC H(33(8) 110(8)) Ф18 ESC J(33(8) 112(8)) Ф19 ESC K(33(8) 113(8)) НТ ESC c(33(8) 143(8)) ВСТ ESC d(33(8) 144(8)) УДАЛ ESC e(33(8) 145(8)) ВЫБР ESC f(33(8) 146(8)) ПРЕД КАДР ESC g(33(8) 147(8)) СЛЕД КАДР ESC h(33(8) 150(8)) Клавиши <ПРЕРЫВ> и <ПРОДОЛЖ> не генерируют коды 21(8) и 23(8) ( их генерирует клавиша <СТОП КАДР>, они используются для перебора цвета фона и символов обычной яркости (цвета)).