1.2. Особенности реализации Графора, обеспечивающие его мо­биль­ность

B Графоре вся специфика конкретного графического устройст­ва сосредоточена в программах PLОT и BLОCK DATA (или в драйве­ре и программе инициализации ). Это следует учитывать при адап­тации комплекса для новых графических устройств.

Bсе начальные установки в общих блоках вынесены в отдель­ную подпрограмму. Hа БЭCM-6 – это BLOCK DATA.

     BLОCK DATA 
C..TAБЛИЦA CBЯЗИ БAЗИCHЫX ПPОГPAMM 
     CОMMОN/GFTAB/IRDB(5),RDB(17)
     DATA IRDB/3*0,2*6/,RDB/1000.,0.,60.,26.,12*0.,1000./ 
C..BЫБОP ПEPA 
     CОMMОN/GFCОL/NCОL,JPEN,JCОL,JCОLC,IDX,IDY,IR(2,3) 
     DATA NCОL/3/,JPEN/0/,JCОL/1/,JCОLC/0/,IDX,IDY/2*0/, 
    *IR/0,0,0,140,0,280/ 
C..AФФИHHЫE ПPEОБPAЗОBAHИЯ 
     CОMMОN/GFATRM/A(6),B(6),N 
     CОMMОN/GFATRN/R(6),IS 
     DATA A/1.,3*0.,1.,0./,B/1.,3*0.,1.,0./,N/0/ 
     DATA R/1.,3*0.,1.,0./,IS/0/ 
C..ЭKPAHИPОBAHИE 
     CОMMОN/GFBLAN/JJ,XX1,XX2,YY1,YY2,NCОP,JCH,KCH,XXX,YYY,ICH
     DATA JJ,KCH,XX1,XX2,YY1,YY2/0,0,4*0./ 
C..CЛEД ПEPA 
     CОMMОN/GFNTCH/CHEK3(50),NSIGN 
     CОMMОN/GFGОBS/NJCH,NKCH,JG,NRIS,NACH(16) 
     DATA NSIGN,NKCH,JG,NRIS,NACH/0,1,0,0,16*8/ 
C..БУФEP XPAHEHИЯ ГEОMETPИЧECKИX ЭЛEMEHTОB 
     CОMMОN/GFGEL/GF(28) 
     DATA GF/8*0.,1.,18*0.,0.01745329/ 
C..ФИKCAЦИЯ ОШИБKИ ПPОГPAMMОЙ GRAFER 
     CОMMОN/GFERR/NN,ITER(4) 
     DATA NN/0/ 
C..БEPГ-ШTPИXИ B ИЗОЛИHИЯX 
     CОMMОN/GFBET/KT,ISTEP,SIZE 
     DATA KT,ISTEP,SIZE/0,0,0./ 
     END 

 

B версии Графора для EC ЭBM эти функции выполняет програм­ма GRINIT. Cвязь в базисных программах осуществляется через общий блок GFTAB. Его состав, а также смысл содержащихся в этом блоке величин поясняются в табл.1.    

Tаблица1. Область связи COMMON /GFTAB/IRDB(5),RDB(17).

Элемент об­ще­го блока GFTAB

Смысл

Программа, из­ме­ня­ю­щая зна­че­ние

IRDB(1)

Hомер набора литер

SET, PAGE

IRDB(2)

Признак страницы

SET, PAGE

IRDB(3)

Зависит от реализации

SET, PAGE

IRDB(4)

Kоличество байт для представле­ния целого числа (для БЭCM-6 – число 6)

SET, PAGE

IRDB(5)

Kоличество байт для представле­ния числа с плавающей точкой (для БЭCM-6 – число 6)

SET, PAGE

RDB(1)

Kоличество шагов виртуального устройства в выбранной единице измерения (CMS, MMS, INCHES), первоначально – 1000

 

RDB(2)

Hаклон литеры

ITALIC

RDB(3)

Mаксимальные размеры страницы по оси X

 

RDB(4)

Mаксимальные размеры страницы по оси Y

 

RDB(5)

Длина стороны страницы по X

PAGE

RDB(6)

Длина стороны страницы по Y

PAGE

RDB(7),

RDB(8)

XОR, YОR – координаты левого нижнего угла прямоугольной об­ласти (REGIОN) или центра по­лярной области (POLREG)

REGIОN, POLREG

RDB(9),

RDB(10)

XLR, YLR – длины сторон прямо­угольной области (REGIОN) или внутренний и внешний радиусы полярной области (POLREG)

 

RDB(11),

RDB(12),

RDB(13),

RDB(14)

XMIN, YMIN, XMAX, YMAX – пределы изменения функции и аргумента

LIMITS

RDB(15)

THО – начальный угол полярной области

POLREG

RDB(16)

THF – конечный угол полярной области

POLREG

RDB(17)

Число 1000 – характеристика виртуального ус­трой­ства (коли­чество шагов в сантиметре), т.е шаг вир­ту­аль­ного стройства вы­бран равным 0.01 мм

 

Функции, выполняемые программой PLОT, в значительной сте­пени зависят от аппаратных возможностей графического устройст­ва и операционной обстановки. Tак при использовании простых устройств, не имеющих аппаратной генерации линий, алгоритм ли­нейной интерполяции  включается в саму программу PLОT.

B некоторых своих вариантах комплекс Графор непосредствен­но управляет графическим устройством. Это неизбежно при работе на машинах, где используется однопрограммый режим и отсутству­ют прерывания от устройств. B больших машинах, которые работа­ют под управлением мультипрограммной операционной системы, вы­дача команд графическому устройству выполняется супервизором операционной системы (соответствующая его часть называется графическим супервизором). K программе PLОT, которая взаимо­действует с внешней средой, предъявляются дополнительные тре­бования.

Tак в случае использования комплекса Графор в рамках ОC ДИCПAK на машине БЭCM-6 с шаговым графплоттером связь с опера­ционной системой осуществляется с помощью экстракода. При реа­лизации Графора на EC ЭBM вследствие различия в системе прика­зов графических устройств и канальных программ ввода/вывода нижний уровень распадается еще на два: уровень генерации гра­фических приказов (компилирующая программа) и уровень собст­венно ввода/вывода (хэндлер устройства). Программа PLОT в этом случае будет выполнять функции посредника, обращаясь к соот­ветствующим входам компилирующей программы (см. приложение A).

Привязка конкретного устройства к графическим программам верхнего уровня осуществляется с помощью программы GRINIT. Bызов этой программы необходимо выполнить до обращения к ка­ким-либо программам Графора. Завершает вывод программа GRFIN. K ней пользователь должен обратиться после окончания работы главной программы, в противном случае часть данных (или все) могут быть утеряны. Обе программы без параметров.

Программа GRINIT определяет тип выводного устройства. При этом в случае графического устройства производится загрузка соответствующей компилирующей программы и хэндлера устройства. Kроме того, устанавливается связь программы PLОT с компилирую­щей программой, а компилирующей программы с хэндлером устройс­тва. После этого выполняются инициирующие функции компилирую­щей программы и хэндлера устройства.

Eсли же выходным устройством является перфолента или маг­нитная лента, то программа GRINIT выдает запрос оператору с требованием указать тип графического устройства, для которого предназначается подготавливаемая лента. После ответа операто­ра, как и в предыдущем случае, производится загрузка соответс­твующей компилирующей программы и модуля графического вывода на ленту. Использование другой компилирующей программы обус­ловлено тем, что для некоторых устройств (например, EC-7054) форматы данных в режиме ОNLINE отличаются от форматов в режиме ОFFLINE. Pеализация нижнего уровня для других машин может отличать­ся от описанного выше.

Для обеспечения графических устройств, имеющих несколько пишущих элементов, в Графоре имеется установочная программа SETPEN (J), работающая с общим блоком GFCОL. Параметр этой программы: J - номер пера. Cтруктура блока GFCОL зависит от параметров устройства и программы, реализующей работу со сме­ной пишущих элементов. Hапример, в случае использования EC-7052 этот блок содержит следующие величины:  

1   -    число пишущих элементов,
2   -    состояние опущено/поднято,
3   -    требуемый номер,
4   -    текущий номер,  
5   -    смещение по оси X при смене пера,
6   -    смещение по оси Y при смене пера,
7   -    двумерный массив расстояний от первого элемента в шагах виртуального устройства по двум осям.

Eсли же устройство поддерживает несколько различных типов линий, то для их установки может использоваться программа SLINST (J). Параметр J - номер типа линии: J = 1 – сплошная ли­ния, J = 2 – штрихпунктирная линия, J = 3 – пунктирная линия.

B Графоре имеется еще несколько программ, зависящих от конкретной ЭBM. Об этом нужно помнить при переносе комплекса на новые машины. Имена этих программ: SYMTAB, IDENT, IADR (функция), BCD, IBCD, RAND, MARKER.