14 biblioteczka podstawowych procedur graficznych
\r
16 moze wspolpracowac z kompilatorami firmy Microsoft:
\r
18 Fortran 77 wersja 3.31 i 4.00
\r
23 C (Lattice) wersja 3.10
\r
24 Aztec C wersja 3.20d
\r
30 obsluguje karty IBM color/graphics, Hercules II oraz EGA
\r
37 wersja 2.2, grudzien 1987
\r
48 Miroslawa Milkowska - procedury poziomu 1
\r
51 Michal Jankowski - procedury poziomu 2
\r
54 Osrodek Obliczeniowy Instytutu Informatyki
\r
55 Uniwersytet Warszawski
\f\r
66 Procedury poziomu 1 4
\r
67 Procedury ustawiania trybu 5
\r
68 Procedury sterujace kolorami 8
\r
69 Procedury ustawiania pozycji 11
\r
70 Procedury obslugujace punkty 12
\r
71 Procedury rysowania linii 13
\r
72 Procedury operujace na fragmentach ekranu 15
\r
73 Procedury wejscia/wyjscia dla pojedynczych znakow 16
\r
74 Procedury wejscia/wyjscia dla linii 18
\r
75 Procedury wejscia/wyjscia dla okienek 19
\r
76 Procedury poziomu 2 20
\r
77 Informacje dodatkowe 22
\r
78 Procedury dodatkowe 22
\r
84 A. Uzycie IIUWGRAFu z FORTRANem 77 23
\r
85 B. Uzycie IIUWGRAFu z Pascalem 24
\r
86 C. Uzycie IIUWGRAFu z Lattice C 25
\r
87 D. Uzycie IIUWGRAFu z LOGLANem 26
\r
88 E. Wykaz specyfikacji procedur IIUWGRAFu 27
\r
89 F. Wartosci kodow klawiszy specjalnych 29
\r
90 G. FEDIT - prosty program do edycji kroju znakow 30
\r
91 H. Zmiany IIUWGRAFu w stosunku do poprzednich wersji 33
\r
103 Rysunek jest tworzony na ekranie monitora za pomoca
\r
104 szeregu wywolan procedur bibliotecznych IIUWGRAF. Modyfikuja
\r
105 one zawartosc bufora mapy bitowej, ktora jest zwykle
\r
106 bezposrednio wyswietlana na ekranie. Zmiany te sa wtedy
\r
107 widoczne natychmiast. Umiejscowienie bufora roboczego moze
\r
108 byc jednak zmienione, tak aby byl on zwiazany z obszarem
\r
109 pamieci dostarczonym przez uzytkownika. W tym przypadku
\r
110 zmiany jego zawartosci oczywiscie nie sa wyswietlane, a
\r
111 nawet przestawienie monitora w tryb graficzny nie jest
\r
112 konieczne. Rysunek moze byc wtedy skonstruowany w pamieci,
\r
113 bez wyswietlania, przechowany na dysku w postaci binarnej i
\r
114 odtworzony pozniej na ekranie. Omowiony tryb pracy jest
\r
115 mozliwy jednak tylko dla karty Hercules II oraz karty IBM.
\r
116 W opisie procedur slowo ekran, tam gdzie mowa o jego
\r
117 zawartosci, nalezy rozumiec wlasnie jako bufor roboczy.
\r
119 Karty Hercules II oraz EGA daja dodatkowa mozliwosc
\r
120 blyskawicznego przelaczania pomiedzy dwiema
\r
121 rownouprawnionymi stronami graficznymi.
\r
123 W wersji podstawowej karta graficzna EGA posiada
\r
124 64K bajty pamieci. Pamiec ta moze byc zwiekszona do 128K
\r
125 oraz 256K bajtow. Opisane ponizej procedury graficzne
\r
126 dotycza w zasadzie karty EGA z pelna pamiecia 256K bajtow.
\r
127 Tylko w tej wersji karty mozna bowiem uzywac 16 kolorow
\r
128 ( z 64 istniejacych ) oraz dwoch stron graficznych. W obu
\r
129 wersjach z mniejsza pamiecia istnieje tylko jedna strona
\r
130 graficzna, a ponadto w wersji podstawowej uzytkownik ma
\r
131 mozliwosc korzystania tylko z 4 kolorow (z 16 istniejacych).
\r
133 Dostarczone sa cztery zestawy oddzielnych bibliotek
\r
134 IIUWGRAF, kazda dla innego rodzaju ekranu:
\r
136 HGCMSF i HGCMSF4 dla karty Hercules
\r
137 MGCMSF i MGCMSF4 dla karty IBM color/graphics
\r
138 MGC64MSF i MGC64MF4 dla karty IBM w trybie mono
\r
139 EGAMSF i EGAMSF4 dla karty EGA
\r
141 Biblioteki HGCMSF, MGCMSF, MGC64MSF i EGAMSF zgodne
\r
142 sa z konwencjami Fortranu ( wersja 3.31 ) i Pascala firmy
\r
143 Microsoft. Natomiast biblioteki HGCMSF4, MGCMSF4, MGC64MF4 i
\r
144 EGAMSF4 sa zgodne z konwencjami Fortranu ( wersja 4.00 )
\r
145 firmy Microsoft. Dodatkowo, kazda biblioteka moze byc
\r
146 dostarczona w konwencji Lattice C, oddzielnie dla czterech
\r
147 modeli kodu S, P, D i L.
\r
149 Programy uzytkowe komunikuja sie z IIUWGRAFem na
\r
152 poziom 1 - zarzadzanie ekranem na poziomie pixli,
\r
153 przy uzyciu prawdziwych wspolrzednych na ekranie,
\r
155 poziom 2 - rysowanie punktow i linii we
\r
156 wspolrzednych abstrakcyjnych.
\r
164 Procedury poziomu 1
\r
166 Wszystkie parametry bez podanej explicite
\r
167 specyfikacji maja typ integer. Wszystkie parametry calkowite
\r
168 powinny miec wartosci 16-bitowe (integer*2 w Fortranie,
\r
169 integer w Pascalu, int w C)
\r
172 Zakresy wspolrzednych ekranu:
\r
175 0 <= iy <= 347 dla karty Hercules
\r
178 0 <= iy <= 199 dla karty IBM color/graphics
\r
181 0 <= iy <= 199 dla karty IBM color/graphics
\r
184 0 <= iy <= 349 dla karty EGA
\r
188 (0,0)-----------> (ix,0)
\r
201 Procedury ustawiania trybu
\r
205 Procedura GRON ustawia monitor w graficznym trybie
\r
206 pracy, czyszczac zawartosc jego ekranu, ktory jednoczesnie
\r
207 staje sie buforem roboczym. Parametr i ma znaczenie jedynie
\r
208 dla karty IBM w trybie 320*200: wartosc 1 wybiera normalne
\r
209 kolory, wartosc 0 - kolory zmodyfikowane do pracy na
\r
210 monitorach monochromatycznych. Dla kart Hercules, EGA oraz
\r
211 karty IBM w trybie 640*200 wartosc parametru i jest
\r
212 ignorowana. Przy przelaczaniu karty Hercules z trybu
\r
213 tekstowego na graficzny i odwrotnie stosowane jest
\r
214 programowo opoznienie ok. 3 sekund. Tryb karty IBM ustawiany
\r
215 jest wprost, bez pomocy przerwania 10H, tak aby mozliwa byla
\r
216 jednoczesna praca na monitorze kolorowym w trybie graficznym
\r
217 z praca na monitorze monochromatycznym w trybie tekstowym.
\r
218 Konsekwencja tego rozwiazania jest to, ze nie mozna
\r
219 korzystac z komendy GRAPHICS. Natomiast tryb karty EGA jest
\r
220 ustawiany wprost, za pomoca przerwania 10H.
\r
226 Funkcja NOCARD zwraca liczbe calkowita
\r
227 identyfikujaca rodzaj monitora obslugiwanego przez biezaco
\r
228 uzywana biblioteke:
\r
230 1 dla karty Hercules
\r
231 2 dla karty IBM w trybie kolor
\r
232 3 dla karty IBM w trybie mono 640*200
\r
233 4 dla karty IBM w trybie mono 320*200
\r
236 Funkcja NOCARD moze byc wywolana dopiero po
\r
237 zainicjowaniu trybu graficznego za pomoca procedury GRON.
\r
238 Parametr ple jest ignorowany.
\r
244 Procedura GROFF przelacza monitor w tryb tekstowy,
\r
245 wypelniajac zawartosc jego ekranu spacjami. Przed
\r
246 zakonczeniem dzialania programu monitor, z ktorego byl
\r
247 wywolany, nalezy zawsze ustawic z powrotem w tryb tekstowy.
\r
252 Procedura CLS czysci ekran, wypelniajac go kolorem
\r
253 0. Czyszczenie odbywa sie bez wylaczania ekranu.
\f\r
260 HPAGE(nr, tryb, zeruj)
\r
262 Procedura HPAGE ma zastosowanie jedynie dla kart
\r
263 Hercules oraz EGA. Pozwala na dostep do drugiej strony
\r
264 graficznej monitora. Wywolanie HPAGE wybiera strone o
\r
265 numerze nr (0 lub 1), zeruje jej zawartosc, o ile parametr
\r
266 zeruj ma wartosc <> 0, oraz ustawia jej tryb:
\r
268 tryb = 0 wyswietla zawartosc strony alfanumerycznie
\r
269 tryb = 1 wyswietla zawartosc strony graficznie
\r
270 tryb =-1 przypisuje do tej strony bufor roboczy
\r
273 Przypisanie bufora roboczego trybem -1 nie zmienia
\r
274 numeru ani sposobu wyswietlania biezacej strony. Tryb 0
\r
275 wiaze bufor roboczy z wybrana wlasnie strona. Przelaczanie
\r
276 stron odbywa sie bez opoznien, o ile nie ulega zmianie tryb
\r
277 wyswietlania (alfanumeryka/grafika). Poza tym, wywolanie
\r
278 HPAGE(0,1,1) jest ( tylko dla karty Hercules ) rownowazne
\r
279 GRON(), a HPAGE(0,0,1) - wywolaniu GROFF.
\r
281 Typowa petla animacyjna moze byc zatem rozwiazana na
\r
288 (* NARYSUJ PIERWOTNY OBRAZ *)
\r
292 HPAGE(1-NR,1,0); (* WYSWIETLANIE *)
\r
293 HPAGE(NR,-1,1); (* BUFOROWANIE *)
\r
294 (* NARYSUJ ZMODYFIKOWANY OBRAZ *)
\r
303 Procedura VIDEO przelacza bufor roboczy tak, aby
\r
304 miescil sie on w tablicy podanej jako parametr jej
\r
306 Samo wywolanie VIDEO nie zmienia zawartosci bufora. Obraz
\r
307 wyswietlany na monitorze nie bedzie ulegal teraz zmianom
\r
308 mimo wywolywania procedur modyfikujacych zawartosc ekranu.
\r
309 Wszelkie odwolania do ekranu beda teraz dokonywane w
\r
310 tablicy. Gotowy obraz moze byc przeniesiony na rzeczywisty
\r
311 ekran za pomoca procedur GETMAP/PUTMAP lub zapisany binarnie
\r
312 na dysku w celu pozniejszego odtworzenia. Tablica powinna
\r
313 miec 16K bajtow przy wspolpracy z karta IBM i 32K bajtow
\r
314 przy wspolpracy z karta Hercules.
\r
315 Procedury VIDEO nie mozna stosowac dla karty EGA.
\f\r
323 VAR BOK: ARRAY[1..32K] OF BYTE;
\r
324 FRAGM: ARRAY[1..MAX] OF BYTE;
\r
327 (* NARYSUJ STRONE TYTULOWA *)
\r
330 (* SKONSTRUUJ RYSUNEK "NA BOKU" *)
\r
334 (* ZAPAMIETAJ FRAGMENT GOTOWEGO RYSUNKU *)
\r
336 GETMAP(MAXX,MAXY,FRAGM);
\r
337 (* PRZYPISZ Z POWROTEM EKRAN DO MONITORA *)
\r
338 GRON(1); (* NIESTETY, CZYSCI EKRAN *)
\r
344 W przypadku wywolania VIDEO(tablica(adres)), wartosc
\r
345 wyrazenia adres musi byc postaci 1+k*16, gdzie k=0,1,2,...
\r
353 Procedury sterujace kolorami
\r
358 Procedura COLOR ustawia biezacy kolor. W tym
\r
359 kolorze beda odtad dokonywane zmiany zawartosci ekranu. Na
\r
360 monitorach monochromatycznych kolor 0 oznacza czarny (pixel
\r
361 wygaszony), kolor <> 0 oznacza bialy (pixel zapalony).
\r
362 Na monitorach kolorowych, dla karty IBM color/graphics,
\r
363 kolory maja nastepujace numery:
\r
365 0 - tlo (czarny lub ustalony wywolaniem BORDER)
\r
366 1 - zielony lub turkusowy - cyan ( zaleznie od wyboru
\r
368 2 - czerwony lub purpurowy - magenta
\r
369 3 - zolty lub bialy
\r
371 Kolorem ustawionym poczatkowo jest 1.
\r
374 Dla karty EGA kolor moze przyjmowac wartosci od 0
\r
375 do 15. Znaczenie tego parametru jest okreslone poprzez wybor
\r
376 palety ( przyporzadkowanie kazdemu z 16 identyfikatorow
\r
377 koloru dowolnego koloru z 64 istniejacych ), dokonywany za
\r
378 pomoca procedury PALLET.
\r
379 Kolorem ustawionym poczatkowo jest 7.
\r
384 Procedura STYLE ustawia biezacy styl, czyli
\r
385 kombinacje kolorow uzywana do rysowania odcinkow (DRAW) i
\r
386 wypelniania obszarow (HFILL,VFILL). Styl wybiera jeden z
\r
387 szesciu nastepujacych sposobow mieszania tla (.) i biezacego
\r
397 Przy rysowaniu odcinkow kolejne pixle beda mialy
\r
398 kolor wyznaczony cyklicznie wzorcem stylu. Pierwszy i
\r
399 ostatni pixel odcinka bedzie zawsze mial biezacy kolor.
\r
400 Przy wypelnianiu, podany wzorzec dotyczy linii poziomych
\r
401 (pionowych) ekranu o parzystej wspolrzednej y (x). Wzorzec
\r
402 dla linii o wspolrzednych nieparzystych dobierany jest
\r
404 Inne sposoby mieszania, dopuszczajace uzycie wiekszej liczby
\r
405 kolorow sa dostepne za pomoca procedury PATERN.
\f\r
411 PATERN(par,par1,par2,par3)
\r
413 Procedura PATERN pozwala rysowac odcinki i
\r
414 wypelniac obszary dowolna kombinacja kolorow. Przy rysowaniu
\r
415 odcinkow brany jest pod uwage tylko par. Przy wypelnianiu,
\r
416 par oraz par2 dotycza linii poziomych (pionowych) o
\r
417 wspolrzednych y (x) parzystych, par1 oraz par3 - linii o
\r
418 wspolrzednych nieparzystych ( na zmiane kolejno par/par2
\r
419 oraz par1/par3 ). Wartosci par,...,par3 przedstawione jako
\r
420 czterocyfrowe liczby szesnastkowe daja wzorce mieszania
\r
421 numerow kolorow. 0 oznacza tlo, inne cyfry - zob. opis
\r
426 PATERN(#1100,#0011,#1100,#0011);
\r
427 ODPOWIADA: COLOR(1); STYLE(3);
\r
431 PATERN(#1212,#0303,#2121,#3030);
\r
432 NIE MOzE BYC UZYSKANY INACZEJ
\r
437 Procedura BORDER ustawia biezacy kolor tla.
\r
444 3 turkusowy - cyan (niebiesko-zielony)
\r
446 5 karmazynowy - magenta (czerwono-niebieski)
\r
450 Kolory 8 - 15 to jasniejsze odcienie kolorow 0 - 7, przy
\r
451 czym kolor bialy ma numer 15.
\r
453 Przedstawione powyzej kolory dotycza tylko karty IBM, dla
\r
454 karty EGA natomiast parametr kolor moze przyjmowac wartosci
\r
460 Dla karty IBM color/graphics :
\r
462 procedura PALLET wybiera biezaca palete z dwu
\r
468 0 turkusowy,karmazynowy,bialy
\r
469 1 zielony,czerwony,zolty
\r
476 Domyslna paleta jest paleta nr 0.
\r
478 Dla karty EGA natomiast procedura PALLET sluzy do
\r
479 wyboru dowolnych 16 kolorow z 64 ogolnie dostepnych.
\r
480 Parametr nr powinien byc postaci
\r
481 kolor16 * 256 + kolor64,
\r
483 kolor16 oznacza identyfikator koloru ( uzywany
\r
484 przez procedure COLOR ), mogacy przyjmowac wartosci 0 - 15,
\r
485 kolor64 oznacza wybrany kolor.
\r
488 Standardowa paleta ( przyjmowana domyslnie )
\r
489 zawiera nastepujace kolory :
\r
491 identyfikator kolor numer koloru
\r
502 9 jasno-niebieski 57
\r
503 10 jasno-zielony 58
\r
504 11 jasno-turkusowy 59
\r
505 12 jasno-czerwony 60
\r
506 13 jasno-karmazynowy 61
\r
508 15 intensywny bialy 63
\r
511 Wszystkie dostepne kolory mozna obejrzec oraz
\r
512 poznac ich numery za pomoca programu demonstracyjnego
\r
515 Procedura PALLET nie ma zastosowania dla karty
\r
522 Procedura INTENS wybiera intensywnosc kolorow.
\r
523 Dla i rownego 0 intensywnosc jest wieksza, dla i rownego 1
\r
525 Domyslnie intensywnosc jest ustawiona na poziomie 0.
\r
527 Procedura INTENS ma zastosowanie tylko dla karty IBM.
\f\r
534 Procedury ustawiania pozycji
\r
539 Procedura MOVE ustawia biezaca pozycje na ekranie
\r
540 na pixel o wspolrzednych (x {kolumna}, y {wiersz}).
\r
543 INXPOS(ple), INYPOS(ple)
\r
545 Funkcje calkowite INXPOS i INYPOS zwracaja
\r
546 odpowiednio wspolrzedne x i y biezacej pozycji. Parametr ple
\r
552 Procedura PUSHXY powoduje przechowanie biezacej
\r
553 pozycji, koloru i stylu na wierzcholku wewnetrznego stosu
\r
554 IIUWGRAFu. Parametry te nie ulegaja przy tym zmianie.
\r
555 Maksymalna glebokosc stosu wynosi 16.
\r
560 Procedura POPXY odtwarza biezacy styl, kolor i
\r
561 pozycje z wierzcholka wewnetrznego stosu IIUWGRAFu.
\r
562 Glebokosc stosu zmniejsza sie o 1.
\r
586 Procedura TRACK wyswietla na ekranie wskaznik w
\r
587 ksztalcie malej (8*8 pixli) strzalki, skierowanej na punkt o
\r
588 wspolrzednych (x,y). Wskaznik ten moze byc przesuwany po
\r
589 ekranie za pomoca klawiszy kierunkowych. Nacisniecie
\r
590 klawisza powoduje przesuniecie wskaznika o 5 pixli.
\r
591 Nacisniecie odpowiedniego klawisza w trybie numerycznym
\r
592 przesuwa wskaznik o 1 pixel. Klawisz "home" powoduje powrot
\r
593 wskaznika do pozycji (x,y). Klawisz "End" usuwa wskaznik z
\r
594 ekranu i powoduje powrot z procedury, pozostawiajac biezaca
\r
595 pozycje w tym miejscu. Moze byc ona teraz odczytana za
\r
596 pomoca funkcji INXPOS i INYPOS.
\r
604 Procedury obslugujace punkty
\r
609 Procedura POINT ustawia biezaca pozycje w punkcie
\r
610 (x,y) i zmienia jego kolor na biezacy.
\r
615 Funkcja INPIX ustawia biezaca pozycje w punkcie
\r
616 (x,y) i zwraca jego kolor.
\f\r
623 Procedury rysowania linii
\r
628 Procedura DRAW rysuje odcinek od biezacej pozycji
\r
629 do pozycji o wspolrzednych (x,y). Rysowanie polega na
\r
630 zmianie koloru pixli nalezacych, wedlug algorytmu
\r
631 Bresenhama, do odcinka. Pixle te przyjmuja nowy stan
\r
632 zaleznie od biezacego koloru i stylu.
\r
636 CIRB(x,y,r,alfa,beta,kolb,wwyp,p,q)
\r
638 Procedura CIRB rysuje na ekranie wycinek okregu
\r
639 lub elipsy, zaleznie od podanych wartosci p i q,
\r
640 okreslajacych aspekt. Aspekt wyznaczony jest stosunkiem p/q.
\r
641 Dla wartosci aspektu rownej 1 zostanie narysowany idealny
\r
642 okrag. Srodek bedzie umieszczony w punkcie (x,y), promien
\r
643 poziomy bedzie mial wielkosc r pixli, alfa i beta okreslaja,
\r
644 odpowiednio kat poczatkowy i koncowy rysowanego wycinka. Dla
\r
645 alfa = beta zostanie narysowany pelny okrag (lub elipsa).
\r
646 Wartosci alfa i beta sa wyrazane w radianach, w zwyklym
\r
647 ukladzie. Brzeg wycinka i jego promienie zostana narysowane
\r
648 kolorem kolb, niezaleznie od stylu. Jesli wwyp <> 0, wnetrze
\r
649 wycinka zostanie wypelnione biezacym kolorem i stylem.
\r
654 Procedura HFILL rysuje, w biezacym kolorze i stylu,
\r
655 odcinek poziomy od biezacej pozycji do punktu o
\r
660 OSTROZNIE: HFILL nie zmienia biezacej pozycji.
\r
662 Uzycie HFILL jest zalecane przy wypelnianiu
\r
663 obszarow, gdyz dziala znacznie szybciej niz odpowiedni DRAW.
\r
664 Rowniez mieszajac kolory w danym stylu, HFILL, w
\r
665 przeciwienstwie do DRAW nie bierze pod uwage poczatkowego
\r
666 punktu odcinka, co pozwala na uzyskanie substytutu
\r
667 dodatkowych kolorow.
\r
678 Procedura VFILL rysuje, w biezacym kolorze i stylu,
\r
679 odcinek pionowy od biezacej pozycji do punktu o
\r
684 OSTROZNIE: VFILL nie zmienia biezacej pozycji.
\f\r
691 Procedury operujace na fragmentach ekranu
\r
694 GETMAP(x,y,tablica)
\r
696 Procedura GETMAP zapamietuje prostokatny obszar
\r
697 ekranu pomiedzy biezaca pozycja jako lewym gornym rogiem a
\r
698 punktem (x,y) jako prawym dolnym rogiem w tablicy. GETMAP
\r
699 nie zmienia przy tym biezacej pozycji. Tablica powinna miec
\r
700 co najmniej 4 + w*sufit(k/8)*kol bajtow, gdzie w i k sa,
\r
701 odpowiednio, liczba wierszy i kolumn zapamietywanego
\r
702 obszaru, natomiast wartosc wspolczynnika kol zalezy od
\r
703 rodzaju karty graficznej i wynosi 1 dla karty Hercules,
\r
704 2 dla karty IBM oraz 4 dla karty EGA.
\r
706 Przyklad: zapamietanie obszaru 101*101 polozonego w lewym
\r
707 gornym rogu ekranu.
\r
709 VAR OKNO: ARRAY[1..700] OF INTEGER;
\r
713 GETMAP(100,100,OKNO);
\r
720 Procedura PUTMAP ustawia prostokatny obszar ekranu
\r
721 o lewym gornym rogu znajdujacym sie w biezacej pozycji
\r
722 zgodnie z zawartoscia tablicy, w ktorej uprzednio
\r
723 zapamietano fragment ekranu za pomoca procedury GETMAP.
\r
724 Biezaca pozycja nie ulega zmianie. Odtworzeniu podlega caly
\r
725 zapamietany obszar, ktory jest kopiowany w nowe miejsce.
\r
730 Procedura ORMAP dziala podobnie jak PUTMAP, lecz o
\r
731 nowej zawartosci ekranu decyduje wynik zastosowania funkcji
\r
732 or do elementow tablicy i ekranu.
\r
737 Procedura XORMAP dziala podobnie jak PUTMAP, lecz o
\r
738 nowej zawartosci ekranu decyduje wynik zastosowania funkcji
\r
739 xor do elementow tablicy i ekranu.
\f\r
746 Procedury wejscia/wyjscia dla pojedynczych znakow
\r
751 Funkcja calkowita INKEY podaje i usuwa nastepny
\r
752 znak z bufora klawiatury. Czytanie odbywa sie bez echa.
\r
753 Jesli bufor jest pusty, wynikiem jest 0. Klawisze specjalne
\r
754 kodowane sa jako liczby ujemne wedlug zalaczonej tablicy.
\r
755 Metoda ALT-NUM moze byc uzyta do wprowadzenia z klawiatury
\r
756 kodow powyzej 127 jako zwyklych znakow. Uniemozliwia to,
\r
757 niestety, korzystanie ze znakow specjalnych o kodach od 128
\r
760 Przyklad: zaczekaj na klawisz End.
\r
762 PROCEDURE WAIT_FOR_END;
\r
764 WHILE INKEY(0)<>-79 DO;
\r
767 Wartosci kodow klawiszy specjalnych podane sa w Dodatku F.
\r
772 Procedura HASCII rysuje na ekranie znak
\r
773 alfanumeryczny. Znak wpisany jest w raster 8*8. Gorny lewy
\r
774 rog rastra umieszczony bedzie w biezacej pozycji, ktora
\r
775 jednoczesnie przesunie sie o 8 pixli w prawo. Uzyta funkcja
\r
776 rysujaca jest xor. Kroj znakow pobierany jest z tablicy
\r
777 znajdujacej sie w ROM BIOS standardowo pod adresem
\r
778 F000:FA6E. W przypadku niestandardowego ROM BIOSu obraz
\r
779 znaku alfanumerycznego bedzie zly. Uzycie procedur HFONT i
\r
780 HFONT8 pozwala uniezaleznic sie od wersji BIOSu a takze
\r
781 korzystac z innych, rowniez wlasnorecznie zaprojektowanych
\r
782 krojow znakow. Kod znaku 0 powoduje tylko wyczyszczenie
\r
783 miejsca przeznaczonego na znak, bez zmiany biezacej pozycji.
\r
784 Wszystkie kody maja tylko interpretacje graficzna, bez
\r
785 funkcji sterujacych (NL, CR etc.).
\r
787 Przyklad: napisanie slowa "oh" na gwarantowanie czystym tle.
\r
790 HASCII(0); HASCII('o'); HASCII(0); HASCII('h');
\r
793 Parametr procedury HASCII moze byc typu integer lub
\r
794 znakowego ( character w Fortranie, char w Pascalu i C ).
\r
802 HFONT(segment,offset)
\r
804 Wywolanie procedury HFONT przelacza adres wzorca
\r
805 znakow alfanumerycznych na segment:offset. Bez uzycia HFONT
\r
806 uzywa sie adresu F000:FA6E.
\r
809 HFONT8(segment,offset)
\r
811 Uzycie procedury HFONT8 dolacza do programu
\r
812 uzytkowego kopie tablicy kroju znakow z ROM BIOS i zwraca
\r
813 adres tej kopii jako segment:offset (parametry wyjsciowe).
\r
822 Procedury wejscia/wyjscia dla linii
\r
825 OUTHLINE(dlugosc,bufor)
\r
827 Procedura OUTHLINE wywoluje HASCII dlugosc razy,
\r
828 wypisujac na ekran znaki, ktorych kody zawarte sa w buforze.
\r
829 Przed narysowaniem kazdego znaku wywolywane jest HASCII(0).
\r
832 INHLINE(dlugosc,bufor)
\r
834 Procedura INHLINE wczytuje z klawiatury linie
\r
835 zlozona z co najwyzej dlugosci znakow i umieszcza je w
\r
836 buforze. Do wczytywania uzyta jest procedura INKEY.
\r
837 Wyswietlane jest echo. Migajacy wskaznik oznacza oczekiwanie
\r
838 na nacisniecie klawisza. Klawisz BACKSPACE dziala tak, jak
\r
839 mozna tego oczekiwac. Linia moze byc zakonczona klawiszem CR
\r
840 albo wyczerpaniem jej dlugosci. Znak CR konczacy linie nie
\r
841 jest umieszczany w buforze. Przed rozpoczeciem czytania
\r
842 bufor jest wypelniany spacjami. Po zakonczeniu czytania
\r
843 parametr dlugosc zwraca liczbe wczytanych znakow.
\r
844 Migajacy wskaznik jest zawsze rysowany kolorem numer 1,
\r
845 wyswietlane znaki natomiast biezacym kolorem.
\r
848 Przyklad: echo wczytanej linii.
\r
850 VAR LINIA: ARRAY[1:40] OF INTEGER;
\r
855 IF N=0 THEN MOVE(INXPOS(0),INYPOS(0)+10)
\r
856 ELSE OUTHLINE(N,LINIA);
\r
866 Procedury wejscia/wyjscia dla okienek
\r
869 MKWNDW(x,y,kolumn,wierszy,okienko,rozmiar,ramka)
\r
871 Procedura MKWNDW urzadza na ekranie prostokatne
\r
872 okienko do konwersacji. Lewy gorny rog okienka znajdzie sie
\r
873 w punkcie (x,y). Zmiesci ono zadana liczbe kolumn i wierszy
\r
874 tekstu alfanumerycznego. Opis okienka bedzie przechowany w
\r
875 dostarczonej przez uzytkownika tablicy okienko. Parametr
\r
876 rozmiar jest na razie ignorowany, a tablica powinna miec co
\r
877 najmniej 20 bajtow, lub duzo wiecej, jesli okienko ma byc
\r
878 zaslaniane i odslaniane ( patrz opis procedury BURY ). Jesli
\r
879 parametr ramka ma wartosc rozna od 0, obszar okienka bedzie
\r
880 obwiedziony ramka, co uczyni je nieco wiekszym.
\r
885 Wywolanie BURY usuwa okienko z ekranu, przechowujac
\r
886 jego obraz w dalszej czesci tablicy okienko tak, aby moc
\r
887 odtworzyc je pozniej za pomoca EXPOSE. Tablica okienko musi
\r
888 miec odpowiednia wielkosc, aby GETMAP obszaru okienka
\r
889 pozostawilo w niej jeszcze co najmniej 20 bajtow.
\r
892 EXPOSE(okienko,x,y)
\r
894 Wywolanie EXPOSE odtwarza okienko przechowane za
\r
895 pomoca BURY umieszczajac jego gorny lewy rog w punkcie
\r
899 OUTWLINE(okienko,dlugosc,bufor)
\r
901 Procedura OUTWLINE dziala podobnie jak OUTHLINE,
\r
902 wyswietlajac linie w ramach podanego okienka. Bufor o
\r
903 dlugosci wiekszej niz rozmiar okienka wyswietli sie w kilku
\r
907 INWLINE(okienko,dlugosc,bufor)
\r
909 Procedura INWLINE, podobnie jak INHLINE, wczytuje z
\r
910 klawiatury linie tekstu. W przypadku INWLINE okienko
\r
911 wskazuje na obszar ekranu, w ktorym ma pojawiac sie echo.
\r
912 Jesli dlugosc bufora jest wieksza niz rozmiar okienka echo
\r
913 moze zajac w nim kilka linii. Poprawianie wprowadzanego
\r
914 tekstu przy uzyciu BACKSPACE jest mozliwe tylko w ostatniej
\r
915 czesci linii. Dlugosc jako parametr wyjsciowy zwraca liczbe
\r
916 wczytanych znakow, bez konczacego CR.
\f\r
923 Procedury poziomu 2
\r
926 Procedury te operuja wspolrzednymi wyrazonymi
\r
927 liczbami rzeczywistymi odnoszacymi sie do abstrakcyjnego
\r
928 okna o dowolnych rozmiarach.
\r
935 SWINDOW(rxy,ixy,skalowanie)
\r
937 Procedura SWINDOW urzadza na ekranie prostokatne
\r
938 okno umieszczone pomiedzy punktami naroznikowymi podanymi w
\r
939 tablicy ixy jako calkowite wspolrzedne prawdziwych pixli.
\r
940 Program uzytkowy tworzacy rysunek w tym obszarze bedzie
\r
941 okreslal polozenie punktow w sposob abstrakcyjny we
\r
942 wspolrzednych rzeczywistych. Tablica rxy podaje zakresy tych
\r
943 wspolrzednych. Jesli parametr skalowanie ma wartosc 0,
\r
944 abstrakcyjny prostokat bedzie po prostu odwzorowany na
\r
945 wskazana czesc ekranu bez zachowania proporcji miedzy
\r
946 skalowaniem w pionie i w poziomie. Jesli natomiast parametr
\r
947 skalowanie bedzie rozny od zera, wykorzystana zostanie
\r
948 jedynie srodkowa czesc obszaru ekranu tak, aby zachowac
\r
949 rzeczywiste proporcje rysunku, niezaleznie od aspektu danego
\r
951 Odwzorowanie stosowane przez IIUWGRAF odwraca tez kierunek
\r
952 wzrastania wspolrzednej y do naturalnego ukladu:
\r
962 | (ixy(1),ixy(4)) (ixy(2),ixy(4))
\r
964 (rxy(1),rxy(3))--------------------->(rxy(2),rxy(3))
\r
967 Przyklad: przygotowanie rysunku sinusoidy w gornej polowie
\r
971 VAR RW:ARRAY [1:4] OF REAL INIT (0.,6.29,-1.,1.);
\r
972 IW:ARRAY [1:4] OF INTEGER INIT (0,719,0,173);
\r
981 RWINDOW(rxy,skalowanie)
\r
983 Procedura RWINDOW jest skrotem wywolania SWINDOW
\r
984 dla odwzorowania obejmujacego caly ekran.
\r
988 RINXPOS(ple),RINYPOS(ple)
\r
990 Funkcje rzeczywiste RINXPOS i RINYPOS zwracaja,
\r
991 odpowiednio wspolrzedne x i y biezacej pozycji w
\r
992 abstrakcyjnym oknie urzadzonym przez ostatnie wywolanie
\r
993 RWINDOW lub SWINDOW. Biezaca pozycja jest zawsze zaokraglana
\r
994 do najblizszego pixla.
\r
1000 Wywolanie procedury RMOVE ustawia biezaca pozycje w
\r
1001 punkcie (rx,ry) w ostatnio urzadzonym oknie. Pozycja ta jest
\r
1002 zaokraglona do najblizszego pixla.
\r
1008 Wywolanie procedury RDRAW powoduje narysowanie w
\r
1009 biezacym kolorze i stylu odcinka od biezacej pozycji do
\r
1010 pixla najblizszego punktowi (rx,ry) w ostatnio urzadzonym
\r
1015 RCIRB(rx,ry,rr,alfa,beta,kolb,wwyp,p,q)
\r
1017 Procedura RCIRB odpowiada procedurze CIRB z poziomu
\r
1018 1, z tym, ze wspolrzedne srodka (rx,ry) i promien rr
\r
1019 wyrazane sa, jako liczby rzeczywiste, w oknie urzadzonym
\r
1020 przez ostatnie wywolanie RWINDOW lub SWINDOW. Pozostale
\r
1021 parametry maja znaczenie takie, jak w CIRB.
\f\r
1028 Informacje dodatkowe
\r
1031 Pakiet IIUWGRAF zawiera dodatkowo dwa programy
\r
1032 HGCPRINT.EXE oraz MGCPRINT.EXE. Umozliwiaja one drukowanie
\r
1033 tworzonych obrazow graficznych na powszechnie dostepnych
\r
1034 drukarkach ( np. typu STAR GEMINI, EPSON ). W przypadku
\r
1035 uzywania karty Hercules nalezy stosowac program HGCPRINT, a
\r
1036 dla karty IBM color/graphics program MGCPRINT.
\r
1038 Programow tych powinno uzywac sie w nastepujacy
\r
1040 przed zaladowaniem wlasnego programu nalezy wykonac
\r
1041 program HGCPRINT lub MGCPRINT, w zaleznosci od rodzaju
\r
1042 uzywanej karty graficznej. Kazdy z tych programow ustawia
\r
1043 znaczenie klawisza PrtSc. Kazdorazowe pozniejsze nacisniecie
\r
1044 klawisza PrtSc powoduje wydrukowanie graficznej zawartosci
\r
1047 Uwaga. W przypadku karty Hercules drukowana jest
\r
1048 zawartosc pierwszej strony graficznej, niezaleznie od tego,
\r
1049 ktora strona jest aktualnie wyswietlana.
\r
1050 W przypadku karty IBM color/graphics klawisz PrtSc
\r
1051 zaklada, ze jest ustawiony tryb kolor 320*200. Wydruk obrazu
\r
1052 graficznego utworzonego w trybie mono 640*200 jest mozliwe
\r
1053 poprzez uzycie procedury PRTSCR.
\r
1055 Mozliwosc drukowania obrazu graficznego nie
\r
1056 istnieje dla karty EGA.
\r
1058 Autorem programow HGCPRINT oraz MGCPRINT jest
\r
1059 Krzysztof Studzinski.
\r
1064 Procedury dodatkowe
\r
1069 Procedura PRTSCR umozliwia drukowanie obrazow
\r
1070 graficznych tworzonych na ekranie monitora pod kontrola
\r
1071 programu. Parametr nr okresla numer strony graficznej
\r
1072 (0 lub 1), ktorej zawartosc ma byc wydrukowana.
\r
1074 Wywolanie procedury PRTSCR z parametrem nr rownym
\r
1075 zeru jest rownowazne nacisnieciu klawisza PrtSc.
\r
1077 W celu poprawnego dzialania tej procedury nalezy,
\r
1078 analogicznie jak w przypadku klawisza PrtSc, uprzednio
\r
1079 wykonac dolaczony program :
\r
1080 - HGCPRINT.EXE w przypadku uzywania karty
\r
1082 - MGCPRINT.EXE dla karty IBM.
\r
1084 Procedura PRTSCR nie dziala dla karty EGA.
\r
1096 Uzycie IIUWGRAFu z FORTRANem 77.
\r
1099 1) Procedury IN?LINE i OUT?LINE dokonuja jedynie
\r
1100 transmisji tekstu, bez zadnej konwersji pomiedzy postacia
\r
1101 binarna i tekstowa. Aby takiej konwersji dokonac, mozna
\r
1102 posluzyc sie instrukcjami formatowanego wejscia/wyjscia
\r
1103 w polaczeniu z tzw. plikami wewnetrznymi (internal file).
\r
1108 INTEGER*2 I,J,SUM,W(10)
\r
1110 CHARACTER LINEL(20)
\r
1111 EQUIVALENCE (LINE,LINEL(1))
\r
1114 CALL MKWNDW(10,10,21,4,W,20,1)
\r
1115 CALL OUTWLINE(W,20,'PODAJ 2 LICZBY (2I3)')
\r
1116 CALL INWLINE(W,20,LINEL)
\r
1117 READ (LINE,'(2I3)') I,J
\r
1119 WRITE (LINE,'(8H SUMA = I4)') SUM
\r
1120 CALL OUTWLINE(W,12,LINEL)
\f\r
1131 Uzycie IIUWGRAFu z PASCALem.
\r
1134 1) Microsoft Pascal dopuszcza jedynie 6 znakow w nazwie
\r
1135 podprogramu, zatem nazwy: INHLIN(E), INWLIN(E), OUTHLI(NE),
\r
1136 OUTWLI(NE), RWINDO(W), SWINDO(W), RINXPO(S), RINYPO(S) musza
\r
1137 byc uzywane w skroconej postaci.
\r
1139 2) Niektore procedury IIUWGRAFu sa napisane w FORTRANie.
\r
1140 Przy linkowaniu LINK moze domagac sie dostarczenia
\r
1141 biblioteki FORTRAN.LIB. Zadanie to nalezy zignorowac.
\r
1143 3) Do linkowania nalezy uzywac LINK w wersji co najmniej
\r
1144 3.04, do kompilacji Pascal w wersji co najmniej 3.31.
\f\r
1154 Uzycie IIUWGRAFu z Lattice C.
\r
1157 1) Nalezy unikac konfliktow z nazwami globalnych zmiennych
\r
1158 roboczych IIUWGRAFu. Zmienne te maja nazwy rozpoczynajace
\r
1159 sie od liter WIR... i PQASP...
\r
1161 2) W przypadku procedur majacych parametry wyjsciowe ( w
\r
1162 dodatku E sa one zaznaczone jako vars ) nalezy przy ich
\r
1163 wywolaniu przekazywac adres odpowiedniego parametru
\r
1172 INHLINE(&LENGTH,TEXT)
\r
1176 3) Adresy parametrow aktualnych nalezy przekazywac rowniez
\r
1177 w przypadku parametrow bedacych tablicami znakowymi.
\r
1184 CHAR *TEXT; /* LUB NP. CHAR TEXT[40]; */
\r
1186 OUTHLINE(LENGTH, &TEXT[3]);
\r
1187 /* WYPISZ ZNAKI Z TABLICY 'TEXT', ROZPOCZYNAJAC OD
\r
1199 Uzycie IIUWGRAFu z LOGLANem.
\r
1202 1) W biezacej wersji LOGLANu dostepnych jest jedynie 7
\r
1203 podstawowych procedur: GRON, GROFF, MOVE, DRAW, HASCII,
\r
1204 HPAGE, INKEY obslugujacych wylacznie karte Hercules.
\r
1206 2) System okienek do konwersacji nie bedzie w LOGLANie
\r
1207 dostepny w postaci procedur standardowych. Podobnie okienka
\r
1208 o wspolrzednych rzeczywistych.
\r
1210 3) Niektore podprogramy dostepne jako funkcje standardowe
\r
1211 LOGLANu musza miec zmienione specyfikacje parametrow w
\r
1212 stosunku do oryginalnego IIUWGRAFu:
\r
1216 GETMAP GETMAP:function:array of ?
\r
1217 INKEY INKEY:integer function; (* bez parametrow *)
\r
1218 INXPOS INXPOS:integer function;(* bez parametrow *)
\r
1219 INYPOS INYPOS:integer function;(* bez parametrow *)
\r
1230 Wykaz specyfikacji procedur IIUWGRAFu.
\r
1233 proc BORDER(consts b: integer);
\r
1234 L proc BURY(window: buffer);
\r
1235 proc CIRB(consts ix,iy,ir: integer;
\r
1236 consts alfa, beta: real;
\r
1237 consts cbord, bcint, p, q: integer);
\r
1239 proc COLOR(consts c: integer);
\r
1240 proc DRAW(consts ix,iy: integer);
\r
1241 L proc EXPOSE(window: buffer; consts x,y: integer);
\r
1242 L proc GETMAP(consts x,y: integer; ekran: buffer);
\r
1244 proc GRON(consts imode: integer);
\r
1245 proc HASCII(consts ic: integer);
\r
1246 proc HFILL(consts maxx: integer);
\r
1247 proc HFONT(consts seg, offs: integer);
\r
1248 proc HFONT8(vars seg, offs: integer);
\r
1249 proc HPAGE(consts page, mode, clear: integer);
\r
1250 P proc INHLINE(vars n:integer; line: tekst);
\r
1251 L func INKEY(consts idummy: integer): integer;
\r
1252 func INPIX(consts x,y: integer): integer;
\r
1253 proc INTENS(consts i: integer);
\r
1254 PL proc INWLINE(window: buffer; vars n: integer;
\r
1256 L func INXPOS(consts idummy: integer): integer;
\r
1257 L func INYPOS(consts idummy: integer): integer;
\r
1258 L proc MKWNDW(consts x,y,icols,ilines: integer;
\r
1260 consts iwndwsize,iborder: integer);
\r
1261 proc MOVE(consts ix,iy: integer);
\r
1262 L func NOCARD(consts idummy: integer): integer;
\r
1263 proc ORMAP(ekran: buffer);
\r
1264 PL proc OUTHLINE(consts n:integer; line: tekst);
\r
1265 PL proc OUTWLINE(window: buffer; consts n: integer;
\r
1267 proc PALLET(consts p: integer);
\r
1268 proc PATERN(consts p1, p2, p3, p4: integer);
\r
1269 proc POINT(consts ix,iy: integer);
\r
1271 proc PRTSCR(consts nr: integer);
\r
1273 proc PUTMAP(ekran: buffer);
\r
1274 L proc RCIRB(consts ix,iy,ir: real;
\r
1275 consts alfa, beta: real;
\r
1276 consts cbord, bcint, p, q: integer);
\r
1277 L proc RDRAW(consts rx,ry: real);
\r
1278 PL func RINXPOS(consts dummy: real): real;
\r
1279 PL func RINYPOS(consts dummy: real): real;
\r
1280 L proc RMOVE(consts rx,ry: real);
\r
1281 PL proc RWINDOW(rw: array [1:4] of real;
\r
1282 consts s: integer);
\r
1283 proc STYLE(consts s: integer);
\f\r
1289 PL proc SWINDOW(rw: array [1:4] of real;
\r
1290 iw: array [1:4] of integer;
\r
1291 consts s: integer);
\r
1292 proc TRACK(consts x,y: integer);
\r
1293 proc VFILL(consts maxy: integer);
\r
1294 proc VIDEO(ekran: buffer);
\r
1295 proc XORMAP(ekran: buffer);
\r
1297 Uzyto notacji semi-pascalowej.
\r
1298 Specyfikacja consts oznacza parametr przekazywany przez
\r
1299 wartosc (tylko wejsciowy), vars - przez zmienna (wejsciowo-
\r
1301 Typ buffer oznacza tablice bajtowa sluzaca do przechowania
\r
1302 zawartosci okreslonego obszaru ekranu ( rozmiar jej zalezy
\r
1303 od wielkosci tego obszaru ), typ tekst natomiast oznacza
\r
1305 Litery w pierwszej kolumnie sugeruja dodatkowe wazne
\r
1306 informacje (roznice) w kontekscie konkretnych jezykow
\r
1307 (Fortran, Pascal, C, Loglan).
\f\r
1316 Wartosci kodow klawiszy specjalnych:
\r
1320 15 - back tab (shift-tab)
\r
1321 16-25 - ALT-Q az do ALT-P
\r
1322 30-38 - ALT-A az do ALT-L
\r
1323 44-50 - ALT-Z az do ALT-M
\r
1324 59-68 - F1 az do F10
\r
1335 84-93 - Shift-F1 az do Shift-F10
\r
1336 94-103 - Ctrl-F1 az do Ctrl-F10
\r
1337 104-113 - Alt-F1 az do Alt-F10
\r
1339 115 - Ctrl-Cursor-Left
\r
1340 116 - Ctrl-Cursor-Right
\r
1344 120-131 - Alt-1 az do Alt-=
\r
1357 Prosty program do edycji kroju znakow.
\r
1358 Dodatek do biblioteki graficznej IIUWGRAF.
\r
1360 FEDIT pozwala komponowac i modyfikowac uklady pixli o
\r
1361 wymiarze 8*8. Takie uklady moga byc wyswietlane razem z
\r
1362 grafika za pomoca procedury HASCII.
\r
1364 FEDIT produkuje opisy tablic kroju znakow w dwoch
\r
1367 - jako podprogram dostarczajacy adres tablicy kroju
\r
1368 w postaci odpowiedniej do przekazania procedurze HFONT,
\r
1370 - jako niezalezny program umieszczajacy wskaznik do
\r
1371 tablicy kroju w wektorze przerwania 14H.
\r
1373 Pierwszy format moze byc uzyty do zastapienia standardowego
\r
1374 zestawu znakow zwykle znajdujacego sie w ROM BIOS pod
\r
1375 adresem F000:FA6E. Jest on uzywany przez procedure HASCII do
\r
1376 rysowania znakow o kodach od 0 do 127. Stad jego nazwa :
\r
1379 Podprogram wygenerowany przez FEDIT ma nazwe HFONT8. Po
\r
1380 przetlumaczeniu przez MACROASSEMBLER musi byc on linkowany
\r
1381 razem z programem uzytkowym. Jesli zajdzie potrzeba zmiany
\r
1382 nazwy (np. w celu dynamicznego przelaczania pomiedzy kilkoma
\r
1383 krojami znakow), nazwa moze byc zmieniona recznie w tekscie
\r
1386 Drugi format jest uzywany do rysowania znakow z
\r
1387 rozszerzonego zakresu znakow o kodach od 128 do 255. Stad
\r
1391 Opis zestawu znakow w tym formacie musi byc zaladowany do
\r
1392 pamieci przed rozpoczeciem wykonania programu, ktory z niego
\r
1393 korzysta. Wskaznik do tablicy kroju musi byc wpisany w
\r
1394 wektor przerwania 14H. Robi to program wygenerowany przez
\r
1395 FEDIT, ktory nastepnie zawiesza sie za pomoca przerwania 27H
\r
1396 (terminate but stay resident). W tym przypadku tekst
\r
1397 zrodlowy po przetlumaczeniu przez MACROASSEMBLER musi byc
\r
1398 zlinkowany (bez zadnych bibliotek) do postaci .EXE.
\r
1399 IIUWGRAF i FEDIT nie daja mozliwosci dynamicznego
\r
1400 przelaczania tablic znakow rozszerzonego zakresu.
\r
1409 VAR ISEG, IOFFS: INTEGER;
\r
1411 HFONT8(ISEG,IOFFS); (* ADRES TABLICY FORMATU 0 *)
\r
1413 HASCII(45); (* UZYWA ROM BIOS *)
\r
1414 HASCII(145); (* UZYWA ROZSZERZONEGO ZESTAWU *)
\r
1416 HFONT(ISEG,IOFFS);
\r
1417 HASCII(45); (* UZYWA TABLICY FORMATU 0 *)
\r
1418 HASCII(145); (* TEN SAM ROZSZERZONY ZESTAW *)
\r
1420 HFONT(16#F000,16#FA6E);
\r
1421 HASCII(45); (* ZNOWU ROM BIOS *)
\r
1422 HASCII(145); (* TEN SAM ROZSZERZONY ZESTAW *)
\r
1425 FEDIT jest prostym programem konwersacyjnym o kilku
\r
1426 zaledwie rozkazach. Tablica kroju znakow zawiera wzorce
\r
1427 ukladow pixli rozmiaru 8*8. Wzorzec pojedynczego znaku moze
\r
1428 byc wyjety z tej tablicy w celu jego edycji i zapamietany z
\r
1429 powrotem, byc moze w innym miejscu tablicy. Sa dwie tablice
\r
1430 znakow: jedna dla kodow od 0 do 127, druga dla kodow od 128
\r
1431 do 255. Pierwsza z nich nie moze byc modyfikowana. Druga z
\r
1432 nich moze poczatkowo zawierac zaladowany wczesniej
\r
1433 rozszerzony zestaw lub zostac wyczyszczona. Mozna tez
\r
1434 wczytac do niej zestaw zawarty w pliku wygenerowanym
\r
1435 wczesniej przez FEDIT. Po dokonaniu modyfikacji, zawartosc
\r
1436 tej drugiej tablicy moze byc uzyta do generacji badz
\r
1437 "formatu 0" badz "128".
\r
1443 Rozkazy FEDITu sa wprowadzane jako pojedyncze litery
\r
1444 wybierajace czynnosci wymienione w jadlospisie wyswietlonym
\r
1445 u gory ekranu. Dodatkowe parametry podaje sie po
\r
1446 przynagleniu przez FEDIT.
\r
1450 < low odswieza tablice "0 do 127"
\r
1452 > high odswieza tablice "128 do 255"
\r
1454 i init inicjalizuje zerami tablice "128 do 255"
\r
1456 l load laduje tablice "128 do 255" z pliku
\r
1457 dodatkowy parametr:
\r
1458 - nazwa pliku (musi istniec)
\f\r
1465 d dump wypisuje zawartosc tablicy "128 do 255"
\r
1466 na plik; dodatkowe parametry:
\r
1467 - nazwa pliku (bedzie zapisany)
\r
1468 - baza ( 0 albo 128),
\r
1469 zaleznie od formatu
\r
1471 f - MS Fortran, MS Pascal
\r
1472 s - Lattice C, model S
\r
1473 p - Lattice C, model P
\r
1474 d - Lattice C, model D
\r
1475 l - Lattice C, model L
\r
1477 e edit wyjmuje z tablicy pojedynczy znak
\r
1478 i umieszcza go w obszarze roboczym.
\r
1479 dodatkowy parametr:
\r
1480 - kod znaku (dziesietnie)
\r
1481 Po obszarze roboczym mozna poruszac sie
\r
1482 za pomoca klawiszy kierunkowych. Pixel
\r
1483 zapala klawisz Ins, gasi klawisz Del.
\r
1484 Klawisz End powoduje wyjscie z tego trybu.
\r
1486 t text wyswietla tekst pomocny przy ocenie
\r
1487 jakosci ksztaltu znakow. Tekst, nie dluzszy
\r
1488 niz 40 znakow jest wprowadzany przez uzytkow-
\r
1489 nika. Dodatkowe parametry:
\r
1491 - hspace - odpowiednio, pionowy i poziomy
\r
1492 odstep w pixlach pomiedzy znakami. Normalnie,
\r
1493 vspace wynosi 2, hspace - 0.
\r
1495 p put przechowuje wzorzec z obszaru roboczego pod
\r
1496 wskazanym kodem. Dodatkowy parametr:
\r
1497 - kod pozycji (dziesietnie),
\r
1498 powinien byc miedzy 128 a 255
\r
1500 q quit konczy dzialanie FEDIT
\r
1503 Z FEDITem nalezy obchodzic sie ostroznie. Posiada on jedynie
\r
1504 minimalne wbudowane zabezpieczenia i np. bez ostrzezenia
\r
1505 zapisze nowa, nie wykonczona jeszcze wersje kroju znakow na
\r
1506 pliku zawierajacym jedyny egzemplarz poprzedniej, bardzo
\r
1507 potrzebnej wersji.
\f\r
1516 Zmiany IIUWGRAFu w stosunku do poprzednich wersji
\r
1520 Zmiany IIUWGRAFu w stosunku do wersji 1.1
\r
1523 1) Rozszerzenie zestawu obslugiwanych kart graficznych o
\r
1524 karte EGA ( IBM Enhanced Graphics Adapter ).
\r
1526 2) Niewielkie modyfikacje procedur IIUWGRAFu :
\r
1528 - dodanie procedury PRTSCR,
\r
1529 - modyfikacja procedury PATERN polegajaca na :
\r
1530 zwiekszeniu liczby parametrow ( wzorcow ) z
\r
1531 dwoch do czterech oraz
\r
1532 zmianie postaci tych parametrow ( zamiast
\r
1533 liczb dziesietnych liczby szesnastkowe ),
\r
1534 ( rozszerzenie wzorcow oczywiscie oznacza rownoczesnie
\r
1535 modyfikacje procedur HFILL oraz VFILL ),
\r
1536 - zmiany nazw procedur GRAPH, TEXT, SCREEN
\r
1537 odpowiednio na GRON, GROFF, NOCARD.
\r
1542 Zmiany IIUWGRAFu w stosunku do wersji 2.1
\r
1545 1) Udostepnienie procedur CIRB oraz RCIRB dla C.
\r