GRAFIČNA KOMUNIKACIJA VAX - ISKRA DELTA PARTNER INFORMATICA 3/1988 UDK 681.326 Matjaž Debevc Rajko Svečko Mark Martinec* Tehniška fakulteta Maribor * Institut »Jožef Štefan« POVZETEK V Želji, da bi uporabili Partner kot samostojen gra-fidni terminal, je bil napisan grafitni protokol med njim in med računalnikom VAX. S tem smo dosegli, da se uporabljajo vsi Partnerjevi gra-fični ukazi. Pri tem smo uporabili pomožni knjižnici TEKUSR na Partnerju in SUNLET na VAX sistemu. ABSTRACT In wish that we use Partner as an indepandet graphic terminal, was-written a special graphic protocol between Partner and Va:<. With that we are able to use ali Partner's graphics instructions. We used additional libraries: TEKUSR on Partner and SUNLET on VAX. UVOD Zaradi raznovrstnih moinosti i.iporabe vseh mogočih gra-fičnih paketov, ki so namenjeni velikim, dragim in težko dostopnim tujim gra-fičnim terminalom bi bilo ugodno, ko bi lahko vse te pakete uporabljali kar na mikroračunalnikih - sadovih na&e, jugosl ovan.ske ustvar jal nos t i . Primer takega mikroračunalnika je Iskra-Delta Partner z gra-fično kartico, hikroračunalni k Partner je samostojna enota z enobarvnim, gra-fičnim, rastrskim terminalskim zaslonom in največjo resolucijo 1024 « 512. Partner bi zadostoval za osnovna spoznavanje delovanja gra-fike, vendar le do takrat, ko bi uporabnikove želje postale zahtevnejše. 2al Partner nima dovolj prostora za velike gra-fične pakete, ponavadi instalirane v HOST računaln i ku. Taksni paketi so na primer' Gk.S (Graphi cal Kernel System), CGI(Computer Graphics Inter-face), CGM (Computer' Graphics Meta-file), PHIGS(The Programmer's Hierarchical Interactive Graphics System), Za večino programskih "paketov je značilno, da poskušajo biti čimbolj aparaturno neodvisni. Izjema je le krmilni del(DRIVER), ki skroi za pravilno komunikacijo »osrednjega neodvisnega dela s terminalom. Za vsak terminal ga je potrebno napisati znova. Da bi lahko napisali takSne programe za Partnerja, ga moramo uporabiti kot samostojen gra-fični terminal hkrati z rtOST računalnikom, s katerim je povezan. Na ta način lahko kličemo gra-fične podprograme in funkcije v HOST računalniku m pri tem izkoriščamo vse grafične lastnosti mikroračunalnika Partner. Za realizacijo te komuni!acije je potreben protokol za čim hitrejši odtok in pritok in-formacij v mi kroračunal n 11: . 2. PROTOKOL GRAFIČNE KOMUNIKACIJE F'r-otokol pomeni v splošnem pogovor o obnašanju komunikacije med računalniki oziroma terminali. Protokoli so oogovorni za generiranje in procesiranje podatkov. Najoolj 69 znana mreža OSI/ISO( Open System Interconection / International Standard Organi sat i on) na primer vsebuje sedem nivojev: 1. +13 1tni ni vo 2. nivo podatkovnih povezav 3. mrežni nivo 4. prenosni nivo 5. usklajevalni nivo 6. predstavitveni nivo 7. aplikacijski nivo Za usklajevanje aplikacijskih nivojev uporabimo aplikacijski protokol j v tem okviru se giblje tudi protokol za gra-fiitno komuni kac i jo. Osnovni in najbolj grobi princip protokola za gra^fično komunikacijo je v tem, da program v Partnerju prebere niz dolotenih znakov, poslanih s HOST računalnika, in pri tem pokliče ustrezni Partnerjev gra-fični ukaz. Kadar želimo risati na Partnerju brez pomoči HOST računalnika uporabljamo gra-fične ukaze s sistemske datoteke BIOLIB.PfiS. V njej so podprogrami in -funkcije za risanje na Partnerju. Pri tem je treba paziti le, da piiemo programe s katerimi kličemo te ukaze, v TURBO pascalu. Ukaze za komuniciranje z grafičnim procesorjem kličemo s pomočjo funkcije BI0S(29) - (Basic Input/Output SyBte'm) ) od tod tudi ime datoteke. - Pri iskanju spoznavnega niza grafičnih znakov ne smemo motiti ostalih nizov, ki označujejo ukaze, namenjene HOST računalniku. Poiskati je treba takSen niz znakov, ki se pri normalnih ukazih skorajda nikoli ne pojavi Pri bolj zmogljivih grafičnih terminalih uporabljamo ubežne sekvence (escape sequence) za klicanje grafičnih funkcij. Partner tega ne pozna, zato smo se odločili za razpoznavni niz "X3". Znak "%" se zelo redko pojavi, vendar je že mnogo manjža verjetnost, da se bo za tem znakom pojavil znak "Si". Pred vsakim nadaljnim ukazom stoji zopet znak "3" za kontrolo, če bi prižlo do kakžne motnje pri komunikaciji. S tem je dana možnost, da se ne zruži celoten sistem, ampak je napaka samo pri enem ukazu. Za znakom "3" sledi spoznavna koda ukaza. S to kodo ugotovi program z imenom GRAFIKA, kateri ukaz bo moral poklicati iz datoteke BIOLIB.PAS. Tej kodi sledi niz znakov, ki predstavljajo parametre, potrebne za tekoči grafični ukaz. Niz parametrov se zaključi z znakom "3" za označitev začetka naslednjega ukaza. Za popolno zaključitev požiljanje znakov grafike nam sluii znak "Z". Za izvajanje grafične komunikacije vtipkamo ukaz GRAFIKA, za zaključitev komunikacije uporabimo znak "\". S HOST računalnikom, v naSem primeru z VAX-8800 in MikroVAX, želimo najti dostop do teh podprogramov -in funkcij v datoteki BIOLIB.PAS v Partnerju. Za doseg te realizacije, pošiljamo s HOST računalnika nek določen niz znakov. Na Partnerju deluje program za zaznavanje znakov na vhodu/izhodu, pri spoznavnem nizu zaustavi nadaljno vnažanje in izvede ustrezno grafično funkcijo. Po potrebi pošlje tudi določen niz znakov nazaj k HOST računalniku. REALIZACIJA PROGRAMA ZA PARTNER Glavna naloga tega programa je torej, da bere niz znakov iz vhoda/izhoda v Partner, pri določenem spoznavnem nizu pokliče ustrezni grafični ukaz in po potrebi požlje ustrezne parametre HOST računalniku. Problem se pojavi pri branju in pisanju na vhod/izhod Partnerja, kjer je bilo potrebno tudi občasno zaustavljanje tega procesa. Ta problem je rešen s podprogrami in funkcijami, napisanimi v datoteki TEKUSR.INC. Ti nam omogočajo dokaj preprosto branje ali pisanje na vhod/izhod Partnerja. Razvili so jih strokovnjaki v Iskri - Delti v Ljubljani. 4. REALIZACIJA MODULA ZA VAX Za pošiljanje in sprejemanje kod s HOST računalnika smo razvili modul z imenom GRAFPART.PAS. Modul nam omogoča klicanje ukazov z enakimi imeni, kakor pri BIOLIB.PAS v Partnerju tako, da pošlje ustrezne razpoznavne kode in' njim pripadajoče parametre. Pred tem poskrbi za pretvorbo parametrov v znake. Naravna števila se pretvorijo v niz številskih znakov in logične spremenljivke v posamezen znak (TRUE <=> "T"). Pri sprejemu pa se znaki pretvorijo v ustrezne vrednosti parametrov. V datoteki GRAFPART je spremenjeno le ime gtext vtext, oodani pa so podprogrami InitUs, CloseMs in Update. Za interaktiven vhod in izhod smo uporabili knjižnico SUNLET, točneje modul TTIO. Knjižnico so razvili.na Institutu Jožef Štefan v Ljubljani. Da bi bil komunikacijski program čim bolj učinkovit, se lahko držimo naslednjih pravil: - poslane kode naj bodo čim krajše, - za spoznavanje ukazov raje uporabimo črke namesto številk, s čimer prihranimo pomnilniški prostor, - pri kodiranju oziroma pri dekodiranju uporabimo hitre algoritme, - uporabimo knjižnico SUNLET-TTIO, 70 - za izpis znakov imamo tri možnosti! a) uporaba ločila, ki se ne sme pojaviti v tekstu dvakrat zapored, b) uporab« ločila, ki se v tekstu ne sme pojavi ti, C) uvedba parametra za itevilo črk v nizu. Za izpis teksta smo uporabili možnost pod O 1 ki je bila za to komunikacijo najbolj primarna. Naslednji primer nam prikaže poiilJanje kod s strani HOST računalnika (GRAFPART): . xaAiacaH2o 20 reRAFiKASB %S = začetna razpoznavna koda A = vklop grafike 1 •= tip resolucije 8C = brisanje zaslona aH = znak za tekst 20 20 •= vrednosti za način pisanja 7 = žtevilo črk GRAFIKA =» tekst as = zaključek gra-fike 7. PRIMER Naslednji primer nam prikaže uporabo podprogramov, napisanih na računalniškem sistemu VAX-8800. NariAi poln krog s koordinatama x = 100 in V = 100 in s polmerom rad • 50 ! CINHERIT('gra-fp«rt') 3 < vstavitev ukazov za grafiko > program primmrf bagin < inicial. delovne postaje in SUNLET > InitHsi < inicializaciJa grafike 1024 • 512 > ginlt(l)| < risanje polnega kroga > di>c(tOO,100,SO>i < zaklučitev grafičnega načina > g«xit| < zaključitav knjižnice SUNLET > Clos«Ws| end. Ko dobi program GRAFIKA na Partnerji.! na primer niz "aftl", pokliče funkcijo ginitfl) z datoteke BIOLIB.PAS. Ko program zaključimo, ga prevedemo in nato povežemo z objektno datoteko SRAFPART.OBJ in knjižnico SUNLET. 9.. SHEMA PROORAMOVi Partner prograa GRAFIKA z moduli TEKUSR in BIOLIB VAX modul GRAFPART s knjižnico TTIO SEZNAM UKAZOV IN NJIHOVO DELOVANJE ZAKLJUČEK Ta komunikacija nam torej omogoča pisanje krmilnih programov za grafične pakete tako, da uporabljamo ukaze, ki Jih pozna mikroračunalnik Partner. Seveda ne smemo pozabiti, da mora pri tem na Partnerju ves čas delovati komunikacijski program z imenom GRAFIKA. InitWS - inicializacija delovne postaje in knjižnice SUNLET Clo>«WS - zaključitev dela z delovno postajo ginit - postavitev v grafični način in nastavitev resolucije gaxit - zaključitev grafičnega načina gclr - brisanje grafičnega načina •gxy - premik r\A pozicijo (x,y) taxt - pisanje grafičnega teksta vbar - nariie blok circ - nariie krog disc - nariže polni krog ring - nariSe zapolnjen kolobar draM - nariie črto VBCt - nariSe črto z relat. koordinatami •croll - premik slike po.y-osi gatpiM - pove ali je točka na mestu, kjer se nahaja grafični kurzor prižgana qfill - polnjenje omejenih področij v vodoravni ali na^vpični smeri g«tcur*or - vrne koordinate točke Hardcopy - kopira ekran na printer Updata - ažuriranje slike Programi so napisani brez odvečnih znakov in poskuiajo omogočiti čim hitrejšo komunikacijo med HOST računalnikom(VAX 8800, MikroVAX) in mikroračunalnikom partner. Razlika v hitrosti delovanja grafičnega programa na samem Partnerju in hitrosti delovanja programa preko HOST računalnika je skorajda neopazna. Knjižnico Je uporabljena tudi za pisanje krmilnega programa GKS sistema za grafiko na Partnerju. LITERATURAi TURBO PASCAL, Gams Matjaži Osnova dobrega programiranja, VAX - 11 PASCAL: Language Reference Manual, VTO ERIi Projekt-Mreže.