GRAFOR DVK
Данный материал защищён авторскими правами!
Использование материала заявлено как добросовестное, исключительно для образовательных некоммерческих целей. Источник: https://www.tis.kz/forum/topic.php?forum=28&topic=7# |
РУКОВОДСТВО ПО ПРИМЕНЕНИЮ СИСТЕМЫ ГРАФОР ДВК. Вторая редакция Белоножкин А.Н. ГГУ сл.тел. 65-75-23 Нижний Новгород 1990 год А Н Н О Т А Ц И Я Описана реализация пакета ГРАФОР для ЭВМ типа ДВК под управлeнием операционной системы RT11. Разобран порядок работы в системе, даны примеры и справочный материал по использованию конкретной версии пакета. С О Д Е Р Ж А Н И Е стр. От автора ................................................ 3 1. Для чего это нужно? ...................................... 4 2. Как этим пользоваться? ................................... 5 2.1 Настройка системы (инициализация) ................... 5 2.2 Написание и запуск программы ........................ 5 2.3 Получение рисунка ................................... 6 3. Подробности для любознательных ........................... 8 3.1 Три интерфейса в ГРАФОРе ............................ 8 3.2 Форматы представления данных ........................ 8 3.3 Роль и назначение системных компонент ГРАФОРа ....... 9 3.4 Экранно-ориентированный вывод информации ............ 9 4. Возможные причины неработоспособности пакета ............. 11 Литература ............................................... 12 Приложения: I Изменения в ГРАФОРе ................................. 13 II Драйверы и их возможности ........................... 14 III Особенности графики для печати ...................... 17 IV Дистрибутивы: их имена и место в системе ............ 18 V Перечень подпрограмм ГРАФОРа ........................ 19 VI КЦГД: дозагружаемый графический интерпретатор ....... 27 VII КЦГД: дозагружаемые коды клавиатуры ................. 28 - 3 - От автора. Данное описание не претендует на полное описание пакета ГРАФОР, операционной системы, графических устройств и т.п. Здесь Вы найдете лишь описание того, что является "особенным" в реализации ГРАФОРа на ДВК. Первый раздел рекомендуется тем, кто интересуется возможностями ГРАФОРа ДВК. Второй предназначен для тех, кто уже приобрел пакет и собирается получить первые рисунки (здесь могут буть полезны приложения I, V). Третий раздел содержит наиболее подробную информацию о функционировании пакета. В приложениях Вы найдете справочную информацию, снабженную комментариями. Автор будет рад получить Ваши замечания, предложения, дополнения по работе пакета. Обращайтесь либо напрямую, либо через "Диалог"; все Ваши проблемы будут рассмотрены и по возможности устранены в кратчайшие сроки. - 4 - 1. Для чего это нужно? Система ГРАФОР предназначена для графического представления результатов инженерных вычислений и, согласно своему назначению, позволяет строить графики, гистограммы, карты изолиний, проекции поверхностей, применять методы сплайн-интерполяции, сглаживать экспериментальные данные, производить афинные преобразования и экранирование, выполнять геометрические вычисления и т.д. Подробнее обо всем этом изложено в [1]. Целью же этого руководства являлось более подробное описание конкретной реализации ГРАФОРа на машинах типа ДВК. ГРАФОР - это достаточно громоздкая система, что до некоторого времени сдерживало его распространение на микро-ЭВМ. Первым прорывом в этой области можно считать появление ГРАФОРа на персональных ЭВМ типа IBM PC, что опиралось на возросшую вычислительную мощность, об'ем памяти и появление винчестеров. Аналогичная тенденция наблюдается и в семействе микро-ЭВМ типа ДВК. ГРАФОР адаптирован на ДВК под управлением операционной системы RT11(SJ) (не младше версии 05.00), что позволило реализовать высокий уровень удобства работы с пакетом. Это обеспечивается поддержкой следующих воможностей: - создание промежуточного текстового файла рисунка; - вывод рисунка на экран монитора; - Print_Screen (печать кадра "точка в точку" с возможностью выбора типа печатающего устройства и плотности печати); - графическая печать рисунка с сохранением его линейных размеров; - вывод рисунка на графопостроитель. На данный момент в систему включена поддержка следующих устройств вывода графической информации: - контроллеры КГД и КЦГД; - принтеры EPSON FX-800, ROBOTRON 6362, D100M, CM6337 и другие EPSON-совместимые печати; - графопостроители НЕЙРОН ИС.61, POLTIK. Данная версия ГРАФОРа эксплуатируется около года и зарекомендовала себя как надежная, удобная и простая в обращении система. В перспективе ведутся работы по переносу ГРАФОРа на ЭВМ ЭЛЕКТРОНИКА-85 и расширение номенклатуры графической периферии ДВК. - 5 - 2. Как этим пользоваться? 2.1 Настройка системы (инициализация) Для нормальной работы с ГРАФОРом, после загрузки операционной системы Вы должны подготовить системные компоненты ГРАФОРа к работе. Для этого необходимо выполнить следующие команды: R GS.SYS - загрузка графического интерпретатора в КЦГД, LOAD TT - необходимо для реализации Print_Screen. Их можно отдать с клавиатуры или поместить в любой командный файл, в частности, в STARTS.COM. В последнем случае, системные компоненты ГРАФОРа включатся во время загрузки операционной системы. 2.2 Написание и запуск программы. Для того, чтобы получить рисунок, Вы должны написать программу на ФОРТРАНе. Программа обязательно должна содержать следующие строки: . . CALL GRINIT CALL PAGE(XL,YL,NAME,NNAME,J) . . . CALL ENDPG(NAME,NNAME) . . Ее можно набрать в любом текстовом редакторе. Например, Вы создали файл TEST.FOR, содержащий: PROGRAM TEST DIMENSION X(100),Y(100),Z(100) C Заполнение массивов X,Y,Z X(1)=-1.9 Y(1)=SIN(-1.9) Z(1)=COS(-1.9)*1.5 DO 5 I=2,90 X(I)=X(I-1)+.1 Y(I)=SIN(X(I)) 5 Z(I)=COS(X(I))*1.5 XMN=-2.0 AMN=-2.0 XMX=7.0 AMX=2.0 UX=1.0 - 6 - UY=0.8 KX=0 KY=0 M=0 CALL GRINIT !Инициализация GRAFOR CALL PAGE(19.,10.,' ',-1,0) !Открытие страницы PAGE CALL REGION(0.,0.,19.,10.,,0,1) CALL LIMITS(XMN,XMX,AMN,AMX) CALL AXES(6HAXIS X,6,UX,KX,6HAXIS Y,6,UY,KY,M) CALL LINEMO(X,Y,85,2,10) CALL LINEMO(X,Z,85,14,15) CALL ENDPG(,0) !Закрытие страницы PAGE END После этого, Вы должны его оттранслировать командой FORTRAN TEST и получить загрузочный модуль командой LINK TEST,GR01/BOT:2000, где GR01.OBJ - базовый файл ГРАФОРа, а ключ /BOT необходим для отведения места программе под стек. Далее программу можно запустить на счет командой RUN TEST На экране появится запрос: Device or file_name? на что Вы можете ответить: а) <ВК> или GS: - вывод рисунка на экран б) FILNAM - вызовет создание файла FILNAM.PIC на DK: в) GP: - вывод рисунка на графопостроитель 2.3 Получение рисунка. Пользуясь описываемой системой, Вы имеете возможность получить в любой момент времени твердую копию экрана на принтере. Для этого Вам необходимо нажать на клавиатуре клавишу <ПЕЧАТЬ КАДРА>, или комбинацию <СУ> А. Это наиболее быстрый способ, но он не сохраняет масштаб изображения. При необходимости, можно получить масштабное изображение на печати командой RUN PS FILNAM ,где FILNAM.PIC - результат работы Вашей программы. - 7 - Получить рисунок на графопостроителе можно двумя способами: либо указав имя драйвера GP: в ответ на запрос Вашей программы Device or file_name? либо командой COPY FILNAM.PIC GP: - 8 - 3. Подробности для любознательных. 3.1 Три интерфейса в ГРАФОРе. При внимательном рассмотрении, в ГРАФОРе можно обнаружить четыре логически завершенных уровня и три интерфейса между ними. Схематично это можно изобразить следующим образом: 1) Самым верхним является уровень программы пользователя. Интерфейсом между ней и подпрограммами ГРАФОРа является механизм вызова подпрограмм на ФОРТРАНе. 2) Подпрограммы ГРАФОРа преобразуют всю поступающую к ним информацию в команды виртуального графического устройства, что и является интерфейсом между ГРАФОРом и драйверами графических устройств. 3) Третьим и последним интерфейсом является интерфейс между драйвером и внешним устройством. По сути, он совпадает или является подмножеством интерфейса внешнего устройства. Преобразование информации в ГРАФОРе осуществляется в несколько этапов. Сначала Вы должны из программы на ФОРТРАНе обратиться к подпрограммам ГРАФОРа, ГРАФОР преобразует эти вызовы в команды виртуальному графическому устройству. На этом этапе их можно получить в виде обычного текстового файла с расширением / .PIC /. Далее драйвер преобразует этот файл к интерфейсу внешнего устройства (ВУ). Здесь уже учитываются конкретные технические характеристики ВУ, такие как размер поля вывода, разрешающая способность, число цветов и т.п. На выходе Вы получаете готовый рисунок. 3.2 Форматы представления данных. На уровне вызова подпрограмм ГРАФОРа, форматы данных совпадают, с точностью до приложения I, с описанием, данным в [1]. Между ГРАФОРом и драйверами в передаче данных приняты следующие соглашения: а) виртуальное графическое устройство является векторным; б) виртуальное графическое устройство обладает способностью генерировать прямую линию; в) информация о перемещении пера передается к устройству в виде целого числа шагов. Исходно принято, что устройство имеет разрешение 200 шагов на сантиметр; г) устройство может отрабатывать следующие команды: H -Home- начальная установка устройства, B X,Y -Base- выбор точки (X,Y) в качестве начала отсчета, M X,Y -Move- перемещение пера в точку (X,Y), D X,Y -Draw- перемещение пера в точку (X,Y) с рисованием, J N -Pen - выбор пера (цвета). - 9 - На внешнее устройство данные поступают в его "родном" формате, и лучшее, что в данном случае можно сделать, это отослать Вас к его техническому описанию. 3.3 Роль и назначение системных компонент ГРАФОРа. С самого начала, ГРАФОР ДВК задумывался как система, ориентированная на пользователя. Это повлекло за собой некоторые изменения как в самом ГРАФОРе, так и создание определенного сервиса на уровне драйверов операционной системы. Отправной точкой развития ГРАФОРа для ДВК явились контроллеры КГД и КЦГД. Под них и были созданы две версии экранной графики и функции Print_Screen (копия экрана на печать). На машинах с КГД драйвер GS.SYS необходим для получения рисунка, а TT.SYS, кроме его обычных функций, еще и для получения твердой копии экрана на печати. На машинах с КЦГД драйвер GS.SYS, как и в системах с КГД, соответствует графическому выводу на экран, кроме того, в нем есть программа загрузки в КЦГД интерпретатора графических команд (R GS.SYS). TT.SYS необходим для функционирования Print_Screen. Причем, он во время загрузки операционной системы дозагружает в КЦГД ряд кодов клавиш, которые используются редакторами текстов и клавишу <ПЕЧАТЬ КАДРА> кодом ^A. На обеих системах, Print_Screen работает только если TT.SYS загружен в память командой LOAD TT При этом он перехватывает код ^A, интерпретируя его как команду печати экрана, если же его выгрузить из памяти (сделать нерезидентным), то он ничем не будет отличаться от обычного драйвера терминала. 3.4 Экранно-ориентированный вывод информации. В случае, если весь графический вывод осуществляется на экран и разработчику прикладной программы не желательно передавать пользователю системные компоненты ГРАФОРа, он может вопользоваться библиотекой базовых примитивов с именем GR01TT.OBJ в которой не содержится обращений к драйверам. Эта библиотека по вызовам подпрограмм целиком совпадает с GR01.OBJ, за исключением того, что в ней есть подпрограмма печати экрана. Этой подпрограммой можно воспользоваться из программы на фортране написав вызов CALL GRAPRI(MODE) - 10 - MODE определяет тип печатающего устройства и плотность печати: код плотность тип принтера MODE = -1 - D100 0 60 EPSON 1 120 EPSON 2 120 EPSON 3 240 EPSON 4 80 EPSON 5 72 EPSON 6 90 EPSON 7 144 EPSON - 11 - 4. Возможные причины неработоспособности пакета. Проверяйте количество и тип параметров в вызовах подпрограмм. На стадии сборки задачи программой LINK не забывайте: а) Имена графических библиотек в командной строке должны следовать в порядке их вызова (самая низовая - в конце); б) ГРАФОР имеет большую вложенность подпрограмм; используйте ключ /BOT для увеличения области, резервируемой под стек; в) Размер графических библиотек большой, пользуйтесь ключем /SLOWLY. - 12 - Л И Т Е Р А Т У Р А 1. Ю.М.Баяковский, В.А.Галактионов, Т.Н.Михайлова "Графор. Графическое расширение фортрана", М.,"Наука", 1985 г. 2. Контроллер КГД. Техническое описание. 3. Контроллер КЦГД. Техническое описание. 4. Описание операционной системы RT-11. Программирование драйверов внешних устройств. 5. EPSON FX-800. Техническое описание. 6. НЕЙРОН ИС.61. Техническое описание. 7. POLTIK. Техническое описание. - 13 - Приложение I Изменения в ГРАФОРе. В связи с адаптацией ГРАФОРа на ДВК были изменены следующие подпрограммы пакета: GRINIT производит инициализацию пакета. PAGE (XL,YL,NAME,N,J) открывает страницу XL,YL - размеры страницы NAME - название страницы N - число литер названия страницы N>0 страница подписывается и будет выведена в файл с именем NAME N=0 страница не подписывается, автоматически генерируются имена на DK: GR1.PIC, GR2.PIC, ... N<0 страница подписывается, имя файла запрашивается с терминала <ВК> направляет вывод на экран Если имя файла содержит только имя устройства, то на нем автоматически генерируются имена GR1.PIC, GR2.PIC, GR3.PIC ..., при условии, что не было перезагрузки программы в ОЗУ. J - признак очерчивания рамки J>0 рамка очерчивается, выводится дата создания J=0 рамка не очерчивается, дата не выводится J<0 рамка очерчивается, дата не выводится ENDPG(NAME,N) закрывает страницу NAME - подпись по линии отрыва N - число литер подписи N>0 подписывается и перо уводится к началу следующей страницы N=0 не подписывается, перо возвращается к началу текущей страницы N<0 подписывается, перо возвращается к началу текущей страницы PEN(J) производит смену пера (цвета) SET(J) устанавливает набор литер для подпрограммы SYMBOL: SET(0) набор больших русских и латинских букв SET(1) набор маленьких русских и латинских букв SET(2) набор греческих больших букв SET(3) набор греческих маленьких букв дополнительно введены: SET(4) набор латинских больших и маленьких букв SET(5) набор русских больших и маленьких букв - 14 - Приложение II Драйверы и их возможности. Назначение драйвера заключается в преобразовании интерфейса виртуального графического устройства (информации из пакета ГРАФОР) в команды конкретному устройству. В данном приложении описаны SET параметры драйверов и их назначение. Во время работы программы, ГРАФОР "не знает" для какого графического устройства подготавливаются данные. Поэтому, возникла необходимость в промежуточном интерфейсе виртуального графического устройства. Подробно он описан в 3.2, здесь же только напомним, что цифровая информация из ГРАФОРа передается целым числом шагов виртуального устройства. Ввиду того, что разрешающая способность реального графопостроителя редко выше 100 шагов на сантиметр, было принято, при передаче данных, разрешение в 200 шагов на сантиметр. При необходимости, эта характеристика может быть изменена. Со стороны ФОРТРАНа она хранится в COMMON /GFTAB/ IRDB(5),RDB(17) в элементе RDB(17) (см. также RDB(1); табл.1 стр.12 [1]) Со стороны драйвера ее можно изменить пользуясь командой SET <имя драйвера> NV=<число> Изначально в драйвере, как и в библиотеке, принято разрешение 200 шагов на сантиметр, что обеспечивает масштабную передачу изображений. При необходимости, механизмом SET параметров можно воспользоваться для изменения размеров рисунка, например: SET <имя драйвера> NV=400 вызовет уменьшение всех линейных размеров в два раза. Драйвер <GS:> производит пересчет координат линий рисунка в координаты точек на экране. При этом может оказаться, что рисунок получился больше размеров электронно лучевой трубки(ЭЛТ) т.е. некоторые координаты точек вышли за рамки допустимых значений (например, размер экрана КЦГД 240х800 точек). Такие точки в процессе рисования отсекаются. Если Вам необходимо посмотреть часть рисунка, находящуюся вне поля зрения, Вы можете "переместить" Ваш экран (поле зрения), а точнее точку его левого нижнего угла, в любое место сгенерированной картинки. Если, например, у вас получилась картинка в два раза выше размера экрана, т.е. имеет размер 480х800 точек, то Вы увидите на экране лишь нижнюю ее часть. Чтобы посмотреть верхнюю часть, необходимо командами - 15 - SET GS: X0=0 < не обязательно > SET GS: Y0=240 установить поле зрения "повыше" и заново скопировать рисунок на <GS:>. В настоящее время, в наличии имеются следующие драйверы: 1) GSKCGD.SYS - драйвер для КЦГД, имеет следующие SET параметры: SET GS NV=decimal_value задает число шагов виртуального устройства на сантиметр SET GS X0=decimal_value SET GS Y0=decimal_value задает начало отсчета в точках на экране ЭЛТ (графика КЦГД работает с разрешением 240х800 точек) SET GS [NO]HOME [запрещает]разрешает очистку экрана перед началом вывода рисунка; <NO HOME> реализует режим наложения рисунков. SET GS INIT производит инициализацию драйвера SET GS PRINT производит настройку на тип печати для Print_Screen. 2) GSKGD.SYS - драйвер для КГД, имеет следующие SET параметры: SET GS INIT производит инициализацию драйвера SET GS NV=decimal_value задает число шагов виртуального устройства на сантиметр SET GS X0=decimal_value SET GS Y0=decimal_value задает начало отсчета в точках на экране ЭЛТ (графика КГД работает с разрешением 286х400 точек) SET GS INFORM выводит на экран справочное сообщение 3) GPN.SYS - драйвер для графопостроителя НЕЙРОН ИС.61 SET GP NV=decimal_value задает число шагов виртуального устройства на сантиметр SET GP [NO]PEN [запрещает]разрешает смену пера на графопостроителе SET GP [NO]QUIET [запрещает]разрешает выдачу запроса на экран перед каждой отработкой команды смены пера 4) GPP.SYS - драйвер для графопостроителя POLTIK SET GP [NO]PEN [запрещает]разрешает смену пера на графопостроителе SET GP [NO]QUIET [запрещает]разрешает выдачу запроса на экран перед каждой отработкой команды смены пера - 16 - SET GP NV=decimal_value задает число шагов виртуального устройства на сантиметр SET GP [NO]SWAXY [запрещает]разрешает поворот рисунка на 90 градусов - 17 - Приложение III Особенности графики для печати. Точную копию рисунка на печати Вы можете получить воспользовавшись программой PS.SAV. Последовательность действий может выглядеть следующим образом: .RUN PS *FILNAM где FILNAM - файл рисунка, с полным именем FILNAM.PIC. По истечении 3-15 секунд принтер должен начать печатать Ваш рисунок. Эта программа ориентирована на EPSON-совместимые принтеры. Еще один способ получения напечатанного рисунка - это использование функции Print_Screen. Эта функция реализована на системном уровне. Для ее нормальной работы, необходимо выполнение следующих условий: 1) драйвер TT.SYS должен быть загружен в память 2) должна быть произведена настройка на тип Вашего принтера. В системе с КЦГД это достигается командой SET GS PRINT после чего Вы нажатием соответсвующих цифр должны выбрать тип принтера В системе с КГД настройка осуществляется командой R TT.SYS В обоих случаях загруженный драйвер TT.SYS перехватывает код ^A, интерпретируя его как команду печати экранного ОЗУ. Каждый из этих двух способов печати рисунка обладает своими преимуществами и недостатками. Программа PS.SAV требует файл рисунка, EPSON-совместимый принтер, работает как независимое задание, но с ее помощью можно получить неискаженные рисунки. Преимуществами Print_Screen является оперативность, возможность настроить его на конкретный принтер, он не требует файла рисунка, но при этом не соблюдается масштаб. Образно говоря, Print_Screen рекомендуется для получения "черновых" рисунков, а PS.SAV - для "чистовых". - 18 - Приложение IV Дистрибутивы: их имена и место в системе. На поставляемых Вам дискетах Вы обнаружите все или некоторые из следующих файлов: TT .SYS рабочие драйверы GS .SYS TTKGD .SYS комплект драйверов для КГД; перед использованием GSKGD .SYS Вы должны их переименовать в TT.SYS и GS.SYS соответственно TTKCGD.SYS тоже для контроллера КЦГД GSKCGD.SYS GPN .SYS драйвер графопостроителя НЕЙРОН ИС.61, перед использованием должен быть переименован в GP.SYS, использует параллельный порт ЭВМ. GPP .SYS тоже для графопостроителя POLTIK, использует плату параллельного интерфейса VECTOR=074, CSR=177554 TEST .FOR тестовый пример на фортране GR01 .OBJ основная библиотека ГРАФОРа, должна быть пристыкована к любой графической задаче GR01TT.OBJ тоже, без обращения к драйверам (вывод жестко закреплен за экраном) GR2 .OBJ имена библиотек ГРАФОРа GR3 .OBJ GR4 .OBJ GR6 .OBJ GR61 .OBJ GR7 .OBJ GR8 .OBJ GR9 .OBJ GR10 .OBJ GR11 .OBJ GR12 .OBJ GR13 .OBJ GR14 .OBJ GR16 .OBJ - 19 - Приложение V Перечень подпрограмм ГРАФОРа. ---------------------------------------------------------------- Имя подпрограммы I Имя библиотеки ---------------------------------------------------------------- ADDLEV(C,NCN,IS,CAD,NAD) GR8 ANGLER(DELX,DELY) GR6 ANGRID(X0,Y0,XS,YS,M1,N1,SLOPE) GR13 APPOLY (X,Y,RO,N,CFIT,K1,COF1) GR3 ARC(X1,Y1,X2,Y2,X3,Y3,J) GR3 ARC1(XS1,YS1,XF1,YF1,XC1,YC1,NCW) GR13 ARCANG(R,DELX,DELY,J,TH0A,THFA) GR61 ARCC1(XM,YM,XF,YF,J,R,JB) GR61 ARCELA(A,B,ALPHA,TH0,THF) GR61 ARCELB(A,B,ALPHA,XF,YF) GR6 ARCIA(R,TH0,THF) GR13 ARCIB(R,XF,YF,J) GR6 ARCIC(XM,YM,XF,YF,J) GR6 ARCID(XC,YC,PHI) GR6 ARCOCC(R,XT1,YT1,XT2,YT2,J) GR61 ARCOLC(R,XT1,YT1,XT2,YT2,J) GR61 ARCOLL(R,XT1,YT1,XT2,YT2,J) GR61 AREB1(TH0,THF,G,TH02,THF2) GR6 ARRINL(X,Y,A,IX,IY,IXB,IXE,IYB,IYE,DX,DY,DZ,NL,NLBEG) GR11 ARROW(J) GR6 ASTEP(AN,AX,BS,MK,KD) GR1 ATDX(Z,X,Y) GR14 ATDX1(Z,X,Y) GR14 ATDX2(Z,X,Y) GR14 ATDX3(Z,X,Y) GR14 ATDY(Z,X,Y) GR14 ATDY1(Z,X,Y) GR14 ATDY2(Z,X,Y) GR14 ATDY3(Z,X,Y) GR14 ATRAN2(A1,B1,C1,A2,B2,C2) GR2 ATRST GR2 AXES (NAMEX,NX,UX,KX,NAMEY,NY,UY,KY,M) GR1 AXISC(NAME,NC,MMIN,MS,NM) GR3 AXONOM(X,Y,Z) GR4 BAR(X,Y,H,W,SH,IHAT,NP1) GR3 BARS(Y,YP,N,W,IHAT,NP1) GR3 BCD(A,IB,N) GR1 BEGLEV GR2 BITA(ITAGB,IXBD,IYBD,N1,N2,N5) GR8 BLAN GR2 BLANC(X,Y,N,IN) GR2 BLANCH GR2 BOUND(Z,M,N,X,Y,NX,NY,KX,KY,NF,XMI,XMA,YMI,YMA) GR14 BOX (X,Y,XL,YL) GR1 BRLINE(X,Y,N) GR8 BROKEN (AN1,AN2,AN3,AN4) GR8 BUFL(IXF,YFI,IBX,BYI,RMAX,RMIN) GR7 - 20 - BYPASS(I) GR1 CABIN(I) GR4 CCNTL(CN,L,C) GR13 CCNTRP(CN,P,C) GR13 CELL(PHI,N1,N2) GR8 CHENSP(YM,N,YH,K,C,M) GR3 CILIND(R,HMN,HMX,NH,NFI,DX,DY,DZ,NLINES,NBEG) GR11 CIRC(R) GR6 CIRCLE (XA,YA,TH0,THF,R0,RF,L) GR2 CIRTAC(R,XT,YT,J) GR61 CIRTAL(R,XT,YT,J) GR61 CMGRID(X,Y,N1,N2,MX,MY,SZ,KP,M,N,IKOP) GR8 CMLC(LM,C1,C2) GR13 CMS GR1 CNCTCC(C1,C2,R,N) GR12 CNCTCL(C,L,R,N) GR12 CNCTLL(L1,L2,R,N) GR12 CONDEK(LX,LY,X,Y,Z,STEP,K0,N,C) GR9 COORD (CO,J) GR2 COORDT(DX,DY,DZ,NLINES,N1,N2,NCLUST,NLNDR,ITYP) GR11 COPCHR(C,A) GR0 CORNL (LXI1,LX1,LYJ1,LY1,K1,M1,K2,M2,X,Y,A,LXX, LYY,XF1,YF1,RMAX,RMIN) GR7 COSIN1(X1,Y1,X2,Y2) GR10 COSIN2(X1,Y1,X2,Y2) GR10 CPPP(P1,P2,P3,C) GR13 CROSS(X,Y,J) GR61 CROSSP(X,Y,RC,T) GR11 CTCCP(C1,C2,P,N) GR12 CTCPP(P1,P2,C,N) GR13 CTLLL(L1,L2,L3,M) GR12 CTLLP(L1,L2,P,N) GR12 CTLPP(P1,P2,L1,N) GR12 CUBPOL (X1,X2,Y1,Y2,DY1,DY2,B) GR3 CXYR(X,Y,R,C) GR12 DASHP(X,Y,DL) GR2 DDIST(X,Y) GR61 DERIV5 (DX,Y,N,I) GR3 DIMDRO(D,J) GR6 DIMET GR4 DIST(J) GR6 DRACON(LX,LY,X,Y,Z,STEP,K,N,C,FUNX,FUNY) GR9 DRALIM(LX,LY,X,Y,FUNX,FUNY,S) GR9 DRAWEL(T,I) GR11 DRAWTE GR11 DRFRAM(LX,LY,X,Y,FUNX,FUNY) GR9 DRW(DX,DY,DZ,NLINES,NL1,NL2) GR11 DRWHL(DX,DY,DZ,NLINES,NL1,NL2) GR11 ELIPS (X0,Y0,A,B,ALPHA,THETO,THETF) GR1 ELPS(A,B,ALPHA) GR6 ENDLEV GR2 ENDPG(NUMB,LENN) GR0 EXMIMA (Z,M,N,ZMI,ZMA) GR14 EXTLN(X,Y,Z,G) GR11 EXTREM(R,T,N1,N2,XMN,XMX,YMN,YMX,IKOP) GR8 - 21 - EXUDE(Z,M,N,X,Y,NX,NY,KX,KY,NF,MRKA,MRKI,KD,H,TH) GR14 FATARC(R,XF,YF,J,D) GR6 FATLIN(XF,YF,D) GR6 FINAL GR0 FNROOT(LX,LY,X,Y,Z,NROOTS,ROOT) GR9 FORFIT (M,A,B,XBEG,XEND,MPTS) GR3 FORIF (FUN,N,M,A,B,IER) GR3 FORIT (FNT,N,M,A,B,IER) GR3 FULL GR8 GFFALS(N) GR2 GRAFER(IT) GR9 GRID (X,Y,XS,YS,M,N) GR1 GRINIT GR0 HALLNE(DX,DY,DZ,NLINES,N1,N2,NCLUST,NLNDR,G,TOL,ITYP) GR11 HALOED(DX,DY,DZ,NLINES,NDRAW1,NDRAW2,NC1,NC2, NCLUST,NLNDR,G1,TOL1,ITYP) GR11 HCIND(X,IST,IFN,EL) GR4 HCINIT(A) GR11 HCINV(X,Y,Z,XP,YP,ZP) GR4 HCLINE(X,Y,NP) GR4 HCMULT(A,B) GR4 HCNCOR(X,Y,Z,T) GR11 HCNCRD(X,Y,Z) GR4 HCPRSP(H) GR4 HCROT1(X,Y,Z) GR4 HCSURF(X,Y,Z,NROW,NCOL,ISTA,IFN,JSTA,JFN,LNT,MOVX, MOVY,AMXMN,AR) GR4 HCUNIT(A) GR4 HISTGM(X0,DX,Y0,YV,N,NP1) GR3 HLDLN(DX,DY,DZ,NLINES,I,NC1,NC2,NCLUST,NLNDR,ITYP) GR11 IBCD(IRI,IB) GR1 IDENT(MD,ND) GR0 ILIMTN(L,IR,IBOUND,NB) GR10 INCHES GR1 INCLIN (XBEG,DXEX,JX,Y,N,NM,JS) GR3 INIT GR4 INSDEK(LX,LY,X,Y,Z) GR9 INSIDE(LX,LY,X,Y,Z,FUNX,FUNY) GR9 INTRSC(X1,Y1,X2,Y2,X3,Y3,X4,Y4,X0,Y0) GR7 ISOLIN(N1,N2,X,Y,PHI,ITAGB,NA,IXBD,IYBD,KC,CONT,IKOP) GR8 ISOMET GR4 ITALIC(J) GR1 ITPLBV(LX,LY,X,Y,Z,N,U,V,W) GR9 IVEST (A,B,EPS) GR6 IZFLIN(Z,M,N,X,Y,ZIZ,L,NX,NY,KX,KY,NF,XI,YI,NL) GR14 IZLIN(Z,M,N,X,Y,ZMI,ZIZ,NIZ,NX,NY,KX,KY,XI,YI,NL) GR14 IZOLIN(Z,M,N,X,Y,ZIZ,L,XI,YI,NL) GR14 KEYPO (PHI,X,Y,N1,N2,IS1,IS2,NM,SZ,KP,IKOP) GR8 LCROSS(X1,Y1,X2,Y2,X3,Y3,X4,Y4,C,D) GR10 LESQ (X,Y,RO,M,B,N) GR3 LETIZO(XI,YI,ILM,ZIZ,NIZ,KIND) GR14 LETSPL(XI,YI,ILM,ZIZ,NIZ,KIND) GR14 LEVFUN(PHI,N1,N2,C,NCN) GR8 LEVMAP(C,NC,F0,SP,SM,NP) GR8 LGLINE(X,Y,N,LG,NM,JS,L) GR2 - 22 - LICON(XT1,YT1,XT2,YT2,J) GR6 LIMITS (XMIN,XMAX,YMIN,YMAX) GR1 LINEC(X,Y,N) GR1 LINEMC(X,Y,N,NM,JS) GR1 LINEMO(X,Y,N,NM,JS) GR1 LINEO(X,Y,N) GR1 LINFIL(A,B,N,M) GR3 LININT(IBX,BYI,IXF,YFI,RMAX,RMIN) GR7 LINNUM(X,Y,KT) GR8 LINT(X,Y,XX,YY,N1,N2,KT,IKOP) GR8 LITAN(XT,YT,J) GR6 LOCEXT(PHI,X,Y,N1,N2,IKOP) GR8 LOOK(N1,N2,X,Y,PHI,ITAGB,XX,YY,KT,IKOP) GR8 LOWER (Z,M,N,ZMI) GR14 LPAL(P,A,L1,L) GR12 LPARLD(L1,D,L2) GR12 LPARLP(L1,P,L2) GR12 LPARX(D,L) GR12 LPARY(D,L) GR12 LPERLP(L1,P,L2) GR12 LPP(P1,P2,L) GR12 LSCALE(X1,Y1,X2,Y2,R) GR2 LSFIT (X,Y,RO,M,N,MPTS) GR3 MAP (X,Y,Z) GR7 MARKBE (XI,YI,IL) GR14 MARKER(NMARK) GR1 MATEVL(XV,YV,ZV,XPL,YPL,ZPL,VX,VY,VZ) GR10 MINMAX(A,N,RMN,RMX) GR1 MMS GR1 MNMX(VX,VY,VZ,X,Y,A,LLX,LLY,LXINI,LXE,LYIN,LYE,S) GR7 MODGF(J) GR10 MOVA(DL,TH,J) GR61 MOVB(DX,DY,J) GR6 MOVC(XM,YM,DL,J) GR6 MOVE(X,Y,J) GR1 MOVE(X,Y,J) GR6 MOVE1(X,Y,J) GR2 MOVE2(X,Y,J) GR2 MOVE3(X,Y,J) GR2 MTMPL(AL1,BL1,CL1,AL2,BL2,CL2, AT1,BT1,CT1,AT2,BT2,CT2,AE1,BE1,CE1,AE2,BE2,CE2) GR2 MXMULT(A,B) GR11 NEWFRM GR10 NEXTRG(IBOUND,X,Y,NET,NODES,NB,XV,YV) GR10 NOTCH(X,Y,N,NSIZE,STEP,J,ITR) GR2 NOTCH1 GR2 NUMBER(X,Y,Z,FNUM,N,TH) GR2 NUMLIN(SIZE,N) GR8 OPER(LRP1,I,X,RZ) GR9 PAC(C,A,P) GR13 PAGE (XL,YL,NAME,N0,J) GR0 PATA(C,A1,A2,N,I,P) GR13 PATC(C,A,N,I,J,P) GR13 PATCH(XF1,YF1,RMAX,RMIN) GR7 PATL(PH,PK,N,I,P) GR13 - 23 - PCNAP(PC,P1,ALPHA,P) GR13 PCNTRC(C,P) GR13 PEN(J) GR0 PICTUR(ISCR,SCRN,IDIM1,IDIM2,X1,Y1,X2,Y2) GR10 PIEPP(P1,P2,A,B,K,P) GR13 PILC(L,C,N) GR12 PILL(L1,L2,P,N) GR13 PISS(P1,P2,P3,P4,P,N) GR13 PLOT(IXI,IYI,J) GR0 PMIDPP(P1,P2,P) GR13 PMLP(L,P1,P2) GR13 PMP(P1,P2,J) GR13 PMPP(P1,P,P2) GR13 PNORDR(X,Y,NET,L,IB,IE) GR10 POLG(R,M,PHI) GR6 POLINE(R,TH,N,KS,NM,JS,L) GR2 POLREG(XOFC,YOFC,RIN,RFN,THETA1,THETA2,JTEXT,M,H,J) GR2 POLYG (X,Y,SL,M,TH) GR1 PRAP(P1,R,A,P2) GR13 PREP(X,Y,Z,N0,XV,YV,ZV,XPL,YPL,ZPL,VX,VY,VZ, ISCR,IDIM1,RLYTOX) GR10 PRJ(IT,X,Y,Z) GR11 PRJHL(IT,X,Y,Z) GR11 PRJT(VX,VY,VZ,X,Y,A,LX,LY,LXIN,LXE,LYIN,LYE,XF1,YF1) GR7 PROJCT(XP,YP,ZP,XPJ,YPJ) GR10 PRSP(VX,VY,VZ,X,Y,A,LLX,LLY,LXINIT,LXEND,LYINIT,LYEND, XF1,YF1,RMAX,RMIN,NN) GR7 PSCALE(X,Y,R) GR2 PTLPC(C,P,N) GR12 PVAL(RES,ARG,B,N) GR3 PXY(X,Y,P) GR13 QUADRA(ITAGB,IXBD,IYBD,N1,N2,N5) GR8 RAISE (Z,M,N,ZMI) GR14 RAND(RMIN,RMAX,K) GR3 RAXES(NAME,N,H,UR,KR,M,T) GR2 RCCNTC(CN,C,R1,R2) GR13 RDACA(X0,Y0,R,TH0,THF) GR61 RDACB(X0,Y0,R,XF,YF,J) GR61 RDACC(X0,Y0,XM,YM,XF,YF,J) GR61 RDACD(X0,Y0,XC,YC,PHI) GR61 RDAEA(X0,Y0,A,B,ALPHA,TH0,THF) GR61 RDAEB(X0,Y0,A,B,ALPHA,XF,YF) GR61 RDCRC(XC,YC,R) GR61 RDELP(XC,YC,A,B,ALPHA) GR61 RDMVA(X0,Y0,DL,TH) GR61 RDMVB(X0,Y0,DELTAX,DELTAY) GR61 RDMVC(X0,Y0,XM,YM,DL) GR61 RDMVE(X0,Y0,X,Y) GR61 RDSTR(STORE) GR6 REBLAN GR2 RECT (X,Y,H,W,TH) GR1 RECUR (Z,M,N,NX,NY,KX,KY) GR14 REGION(X,Y,XL,YL,NAME,N,J) GR1 RENTCH GR2 RENUM GR8 - 24 - RESET GR2 ROTATE(X,Y,PSI) GR2 ROTH(NAXES,FI,DX,DY,DZ,NLINES,NBEG,NEND) GR11 SAVETR(A) GR4 SCREN1(ISCR,SCRN,IDIM1,IDIM2,Y,N,IND) GR10 SCREN2(ISCR,SCRN,IDIM1,IDIM2,X,Y,NL,STEP,XBEG,A1, B1,A2,B2,IND) GR10 SCRMOD(ISCR,SCRN,IDIM1,IDIM2,XL,YL,XIR,YIR,XK,YK) GR10 SDPG(STEP,EPS,BETA) GR2 SEARCH(IXF,YFI,IBX,BYI,XF1,YF1,RMAX,RMIN) GR7 SECANT(SL,ALPHA,X,Y) GR61 SEE(L,IR,IBOUND,X,Y,NB,IND,IDRWN,XV,YV) GR10 SEE1(I1,I2,I3,I4,X,Y,XV,YV,IND) GR10 SEGANG(X1,Y1,X2,Y2,A,STEP,IND) GR10 SET(J) GR1 SETBE (LSTEP,SIZEB) GR14 SETTR(A) GR4 SFCFIT(LX,LY,X,Y,Z,MX,MY,NU,NV,U,V,W) GR8 SHADE(X,Y,N,STEP,EPS,BETA) GR2 SHDOWN(I) GR11 SHEAR(N1,N2,F) GR4 SHIFT(DX,DY) GR2 SHUP(I) GR11 SIGNA(NAME,N,H,XO,YO,RFN,UTR,KTR,A,B,BS,MK, KD,Q,S,K,R6,AR,C) GR2 SINCL(XB,STEP,Y,N) GR3 SIZLIN(SIZE,N,M) GR8 SIZNUM(SIZE,FNUM,N,M) GR8 SLINST(J) GR14 SMINV(A,V,N) GR3 SMTBVF(LP,LX,LY,X,Y,Z,N,U,V,W) GR9 SMTONE(LX,LY,X,Y,Z,MX,MY,NU,NV,U,V,W) GR9 SMTSIM(LX,LY,X,Y,Z,N,U,V,W) GR9 SORT3(PA,PB,K) GR12 SORTC(J,C) GR13 SORTCN(M,J,C) GR12 SORTL(L,J,C) GR13 SORTP(J,P) GR12 SORTPT(J,PT1,PT2) GR13 SORTY(DX,DY,DZ,NLINES,N1,N2) GR11 SPHERG(R,NFI,NTETA,DX,DY,DZ,NLINES,NBEG) GR11 SPHERV(R,NFI,NTETA,DX,DY,DZ,NLINES,NBEG) GR11 SPIRAL(TH0,THF,R0,RF) GR6 SPLINE (X,Y,U,N,A,B,C,D,KODE,IER) GR3 SPLINT (X,N,A,B,C,D,Y,M) GR3 SPLITP(X,Y,Z) GR11 SPLOT(IXI,IYI,J) GR0 STAR(R,M,ALPHA,PHI) GR61 STORIN(AL,AU) GR11 STRMOD(J) GR6 STROT3(NAXES,CS,SN,R) GR11 SUPLIN(X,Y,N,NM,JS,L,IKOP) GR8 SVLSEG(AL,AU,I) GR11 SYMBOL(X,Y,SIZE,JBCD,LIMIT,THETA) GR1 SYMTAB(JB,I,NPLOT,KK,IS1) GR1 - 25 - TCALC (X,Y,T,N) GR3 TDAXES(X,Y,REG,L) GR4 TDLIM(X,Y,Z,NROW,NCOL,ISTA,IFN,JST,JFN,S) GR4 TDLIML(X,Y,Z,N,S) GR4 TDLINE(X,Y,Z,N) GR4 TDMP(X,Y,N,A,B,C,D,KODE) GR3 TDROT(NAXES,ALPHA) GR4 TDSCAL(NAXES,SCALE) GR4 TDSECT(Z,X,Y,IX,IY,M,N,AMXMN,AR) GR4 TDTRAN(DX,DY,DZ) GR4 TESTVS GR11 TFM(XF,YF,XM,YM) GR2 THAXES(NAME,N,H,UT,KT,MT,R) GR2 THREED(X,Y,Z,NROW,NCOL,ISTA,IFN,JSTA,JFN, LNTP,NGRD,AMXMN,AR) GR4 TMF(XM,YM,XF,YF) GR1 TMLGF (X,Y,LG,N,XF,YF) GR2 TOKEN(X,Y,MRK,FZ,N,H,TH) GR14 TPF(RM,TM,KN,RF,P,X,Y) GR2 TRANH(DELX,DELY,DELZ,DX,DY,DZ,NLINES,NBEG,NEND) GR11 TRANSF(ZIZ,XI,YI,ILM) GR14 TRANSL(DX,DY) GR2 TRDRAW(ISCR,SCRN,IDIM1,IDIM2,X,Y,Z) GR10 TRG(L,IR,K,KL,KR,NET,NODES,IBOUND,NB,X,Y,XV,YV,IND) GR10 TRGRID(X,Y,N0,NET,IBOUND,NODES,NET0,NT1) GR10 TRIDIG (U,N,A,B,C,D,KODE,IER) GR3 TRIG(X,Y,N0,NODES,NET0,IBOUND,NET,NT1) GR10 TRINGL(X,Y,N0,IBOUND,IDOM,NODES,NET,NT1) GR10 TRSURF(X,Y,Z,N0,XV,YV,NODES,NET0, GR10 VIEW(X,Y,Z) GR4 VPLIM(DX,DY,DZ,NLINES,NL11,NL2,S) GR11 WHERE(X,Y,F) GR1 WHERP(X,Y,F) GR61 WRACA(R,TH0,THF) GR61 WRACB(R,XF,YF,J) GR6 WRACC(XM,YM,XF,YF,J) GR6 WRACD(XC,YC,PHI) GR6 WRAEA(A,B,ALPHA,TH0,THF) GR6 WRAEB(A,B,ALPHA,XF,YF) GR6 WRCRC(R) GR6 WRELP(A,B,ALPHA) GR6 WRMVA(DL,TH) GR6 WRMVB(DELTAX,DELTAY) GR6 WRMVC(XM,YM,DL) GR6 WRMVE(X,Y) GR61 WRSTR(STORE) GR6 XAXIS(Y0,NAMEX,NX,UX,KX,M,J) GR2 XILIY (Z1,Z2,ARG1,ARG2,ZIZOL,I,J,IUS,JUS) GR14 XILIY1 (Z1,Z2,ARG1,ARG2,ZIZOL,I,J,IUS,JUS) GR14 XLGAX (YO,NAME,N,J,K,M) GR2 XPOL(X,Y) GR8 XYSORT (X,Y,N) GR3 YAXIS(X0,NAMEY,NY,UY,KY,M,J) GR2 YLGAX (XO,NAME,N,J,K,M) GR2 YPOL(X,Y) GR8 - 26 - ZAPIT(ITAGB,N1,N2) GR8 ZINT(X1,Z1,X2,Z2,X) GR4 - 27 - Приложение VI КЦГД: дозагружаемый графический интерпретатор. По сути, данное приложение является инструкцией по эксплуатации графического интерпретатора КЦГД. Данный интерпретатор был написан автором для работы с ГРАФОРом, хотя его использование может быть и автономным. Загружается он в ОЗУ КЦГД командой R GS.SYS Чтобы интерпретатор начал действовать, необходимо передать в КЦГД следующие управляющие последовательности: (здесь и далее последовательность <ESC > означает восьмеричный код 033, или десятичный 27; на клавиатуре это клавиша <АР2> или комбинация <СУ>[ ) ESC < переводит КЦГД в расширенную систему команд; ESC P переводит КЦГД в графический режим. В обычный текстовый режим работы КЦГД возвращается следующими командами: ESC ~ (тильда; ^ в нижнем регистре) выводит КЦГД из графического режима в расширенную систему команд; ESC [?2l переводит КЦГД в обычный режим. В графическом режиме КЦГД может выполнять следующие команды: D X,Y; рисование линии из текущего состояния в точку X,Y; M X,Y; перевести перо в точку X,Y; J N; установить цвет <N=0..3>; H; начальная установка интерпретатора; C; после получения этой команды КЦГД выдает в ЭВМ полную последовательность байт для функции Print_Screen; Все эти команды, за исключением <C;>, можно отдать с клавиатуры в автономном режиме. При обращении к драйверу <GS:>, последний автоматически передает в КЦГД все управляющие коды. - 28 - Приложение VII КЦГД: дозагружаемые коды клавиатуры. КЦГД дозагружается новыми кодами клавиатуры в процессе загрузки операционной системы. Программа загрузки находится в файле TT.SYS. Ниже приведены изменяемые коды клавиш. -------------------------------------------------------- Название клавиши КОИ7 Восьмеричный код Примечания -------------------------------------------------------- ПЕЧАТЬ КАДРА ^A 001 ПАУЗА NULL 000 ф5 ^^ 036 ПРЕРЫВ ^S 023 ПРОДОЛЖ ^T 024 ОТМЕН ^U 025 ОСНОВН КАДР ^V 026 ВЫХОД ^C 003 АР2 ESC 033 ВШ ^H 010 ПС ^J 012 ДОП ВАРИАНТ NULL 000 ПМ ESC a 033,141 ВЫБР ESC f 033,146 Ф17 ESC H 033,110 Ф18 ESC J 033,112 ф19 ESC K 033,113 ф20 ESC L 033,114 НТ ESC c 033,143 ВСТ ESC d 033,144 УДАЛ ESC e 033,145 ИСП ESC b 033,142 ПРЕД КАДР ESC g 033,147 СЛЕД КАДР ESC h 033,150 ~ ^J 012 РУС ЛАТ ^N 016 КМП ^O 017 { { 173 } } 175 ТБ ^X 030 ЗБ DEL 177 ПФ1 ESC P 033,120 ПФ2 ESC Q 033,121 ПФ3 ESC R 033,122 ПФ4 ESC S 033,123 7 7 067 * 8 8 070 * 9 9 071 * . . 056 * 4 4 064 * 5 5 065 * 6 6 066 * - - 055 * 1 1 061 * - 29 - 2 2 062 * 3 3 063 * , , 054 * 0 0 060 * ВВОД ^M 015 * ------------------------------------------------- * - Выдает ESC-последовательности в режиме дополнительной клавиатуры.