12 4 1 5 0 10 70 2 12 132› ** LIGHT PEN DRIVER **›› Jest programem sluzacym do obslugi›swietlnego piora.Moze wspolpracowac z programami uzywajacymi grafik 0-7 ,12,13 i 14 - jest instalowany w Handler Tabele pod nazwa "L:".Jako AUTORUN. SYS jest uruchamiany przez DOS i zajmuje w pamieci adresy :›$8800-$8EF5(34816-36497).›› URZADZENIE - L:›› Lokowane w Handler Tab. pod nazwa L: wykonuje instrukcje na otwartym kanale podobnie jak i inne urzadz. Przyjmuje do wykonania instrukcje Basica - OPEN,CLOSE,PUT,GET.›› OPEN - inicjuje swietlne pioro› i otwiera podany kanal.›› CLOSE- Nie likwiduje inicjacji› zamykajac kanal.›› PUT - sluzy do kalibracji› swietlnego piora.›› GET - moze byc uzywana do› wybierania odpowiedniej› pozycji z wlasnego Menu›› KALIBRACJA›› Aby przeprowadzic kalibracje piora nalezy otworzyc kanal, instrukcja PUT wywolac procedure kalibracji, po dokonaniu kalibracji wcisnac przycisk piora co spowoduje powrot do Basicu.›Format:›OPEN#n,8,0,"L:":PUT#n,A:CLOSE#n› gdzie n-numer kanalu› A-dowolny argument PUT› np.› OPEN#1,8,0,"L:":PUT#1,0:CLOSE#1›wywola na ekranie Krzyz i Marker piora.Nalezy w centrum Krzyza ustawic pioro i klawiszami z symbolami strzalek (lewo/prawo/gora/dol) centrowac marker,krzyz i pioro.›Po zakonczeniu wcisnac LPEN. Spowoduje to przejscie do instrukcji CLOSE#1,zamknie kanal i wroci do Basic.››› MENU›› Pod ta nazwa wystepuje korzystanie z driver'a przy obsludze Menu w programach uzytkownika.› Program LPEN DRIVER dzieli ekran na 192 czesci. 8 czesci w poziomie * 24 czesci w pionie. Wszystkie czesci sa ponumerowane od 0 do 191 poczynajac od lewego gornego rogu i w prawo tzn.›› 0,1,2,3,4,5,6,7› 8,9,.........15› ...............› 184,........191›› Uzywajac instrukcji GET mozemy po wcisnieciu przycisku LPEN otrzymac numer czesci ekranu nad ktora stalo w danej chwili pioro.›Format - OPEN#n,4,0,"L:":GET#n,A›np.›10OPEN#2,4,0,"L:":REM inicjacja ›20GET#2,A:REM w zmiennej A otrzymamy nr. wycinka ekranu po wcisnieciu LPEN›30IF A=50 THEN 80›40IF A<15 THEN itd.›80PRINT"zmien. A przyjmuje wartosci od 0 - 191 z krokiem 1"››› INSTRUKCJE I PROCEDURY›› OPEN & CLOSE› Jak mowilismy uzywana jest do inicjacji LIGHT PEN i w programie uzytkownika musi byc uzyta po jednoznacznym ustaleniu grafiki w jakiej pracuje dany program, a przed wykonaniem oper. ze swietlnym piorem.Moze wystepowac lacznie z CLOSE.Np.OPEN#1,4,0,"L:": CLOSE#1 gdyz CLOSE zamyka kanal ale nie likwiduje inicjacji piora. Oczywiscie w tym wypadku nie mozemy uzyc GET lub PUT ale mozna odwolac sie do ktorejs z procedur opisanych w dalszej czesci.›Funkcje inicjacji piora mozna wywolac rowniez przez procedure INIT = USR(36035), a roznica miedzy OPEN polega na tym, ze inicjuje ona pioro nie otwierajac kanalu. Nie mozna po niej uzyc GET ale mozna wywolac proced. MENU = USR(36031) .›› PUT › Sluzy tylko do poczatkowej kalibracji piora.Rownoznaczna funkcje mozna wywolac przez procedure CALIB = USR(36039) bez otwierania kanalu.›› GET › Glownym jej celem jest dostarczenie w swoim argumencie 'A' nr. wycinka Ekranu w momencie przycisniecia LPEN. Wartosc 'A' mozemy rowniez odczytac z komorki $8C49(35913). Oprocz tego GET dostarcza poprzez odczytanie komorek:›$8C42(35906)-XPOSITION(0-159)›$8C46(35910)-YPOSITION(0- 95)› i,lub›$8C4C(35916)-YPOSITION(0-190)›$8CFE(36094) & $8CFF(36095) - ›ml. i st. bajt XPOSITION(0-318)››tzw. graficzne pozycje piora.› Oczywiscie wszystkie dane wiarygodne tylko w chwili wcisniecia i odpuszczenia LPEN. Dlatego nalezy je odczytywac bezposrednio po GET.› Podobna funkcje jak GET mozemy uzyskac przy zamknietym kanale przez wywolanie procedury MENU = USR(36031) otrzymujac pod adresami:›$8C49(35913)-nr. wycinka Ekranu›$8C42(35906)- XPOSITION›$8C46(35910)- YPOSITION›$8C4C(35916)- YPOSITION(*2)›$8CFE(36094)& 8CFF(36095)-XPOS.(*2)›Aktualnosc danych tak jak wyzej.›› PROCEDURA CONTROL=USR(36024)› Po jej wywolaniu graficzne pozycje piora otrzymujemy pod adresami:›$8C42(35906)-X POSITION (0-159)›$8C46(35910)-Y POSITION (0- 95)›oraz dla grafiki np. 14›$8C4C- Y POSITION (0-190)›ewentualnie dla gr. np. 8›$8CFE & 8CFF- X POSITION (0-318)› W procedurze nie jest zawarte oczekiwanie na wcisniecie przycisku LPEN i okreslenie momentu w ktorym powyzsze komorki zostana odczytane zalezy od programu uzytkownika. Zastosowanie - tryby graficzne.››› PAMIEC›› Program LIGHT PEN DRIVER lokuje sie w adresach $8C00-$8EF5(35840-36497).Wykorzystuje grafike PMG do sterowania markerem piora ustalajac PMBASE na $8800.W adresy $8800-$887F zostal wpisany podprogram dla przykladu EXAMPLE4.BAS, ktory nie jest integralna czescia driver'a(patrz opis EXAMPLE4). Driver zaklada ze RAMTOP = 160 i nie obniza go. Dlatego nie chroni sie przed zniszczeniem aby jak najwiecej miejsca zostawic dla programu uzytkownika.Oczywiscie uzytkownik musi byc ostrozny i jego program nie moze przekroczyc adresu $8800. Jak rowniez nie mozna stosowac grafiki bardziej pamieciochlonnej niz 7-ma (bez zmiany RAMTOP).Tym sposobem Pamiec Ekranu i Display List lokuja sie nad programem LPEN DRIVER i dla grafik 0-7(ew.14) maja dosc miejsca. LPEN DRIVER po zaladowaniu oprocz zainstalowania sie w Handler Tabele nie operuje na stronie 6 ani nie zajmuje adresow ponizej $8800. Tak ze sa one calkowicie wolne dla uzytkownika.››› RESET›› Po Reset LPEN DRIVER jest reinicjowany i ustawia ekran na wysoka jasnosc aby pamietac ze driver jest zamontowany› Przy instrukcjach GET czy PUT w momentach oczekiwania na wcisniecie LPEN klawisz BREAK chwilowo nie dziala.Podczas procedur obslugi piora BREAK spowoduje zaklocenie rytmu grafiki PMG. Usunac playera z ekranu mozna przez POKE53248,0 lub ponowna inicjacje piora:›O.#1,4,0,"L:":CL.#1 albo›INIT=USR(36035)››› ZAWARTOSC DYSKETKI››1) DOS.SYS›2) AUTORUN.SYS - Light Pen Driver›3) HELP.DRV- krotka informacja o › programie wywolywana› przez AUTORUN.SYS›4) LPENDRV.COM - LPD jako .COM›5) README.TXT - instrukcja.›6) EXAMPLE1.BAS-;proste przyklady›7) EXAMPLE2.BAS ;programow›8) EXAMPLE3.BAs ;wykorzystujacych›9) EXAMPLE4.BAS ;w pracy LPD.›10)EXAMPLE5.BAS ;›› Program zastrzezony tak w› calosci jak i w czesci.› (c) J.Panczyk› Warszawa tel.› 46-20-51 w.239››› GRAFIKA››Mozliwosc wspolpracy z grafika 0-7.›Przy wspolpracy z GR.14 nalezy›brac YPOSITION z adresu $8C4C›Przy GR.8 stosowac ochrone przez›obnizenie RAMTOP i XPOSITION brac›z adresow $8CFE & $8CFF (mlodszy i›starszy bajt),a YPOS. z $8C4C.› W programach uzytkowych korzystajacych z drivera nalezy kazdorazowo na poczatku wstawiac instrukcje grafika aby otwierany kanal dokonywal inicjacji piora po ustaleniu grafiki. Gdyz ustawienie grafiki pozniej likwiduje inicjacje i pioro nalezy ponownie inicjowac.› Przylad wykorzystania Driver'a w›grafice 7+16 zostal pokazany w›programie EXAMPLE4.› Przyklad jest prosty i zostana tu›tylko opisane jego rutyny assembl.›› Poniewaz zostala uzyta grafika 7›pamiec ekranu rozpoczynajca sie od›adresu 36960 ma 3840 bajtow.›Deklarujemy wiec tablice o takiej›wielkosci DIM BUF$(3840) w ktorej›bedziemy przechowywac rysunek.›Przepisywania z Pamieci Ekranu do›Bufora dokonuje rutyna o adr.34837›EKRBUF=USR(34837,ADR(BUF$))›Przepisywania z Bufora do Pamieci›Ekranu dokonuje rutyna o adr.34888›BUFEKR=USR(34888,ADR(BUF$))›Obie te rutyny oraz procedura obsl.›piora i grafiki zostaly wlaczone do›podprogramu wywolywanego przez›P=USR(34816,ADR(BUF$))›Poczatkiem podpr.jest wlasnie 34816›Parametrem dla tych wszystkich ›wywolan jest adres poczatku naszego›zadeklarowanego bufora.Podprogram›zostal umieszczony w wolnych adr.›$8800-$885D i moze byc wykorzystany›takze w innych celach choc nie jest›integralna czescia LPD.› -Ogolna Struktura Podprogramu-›› z programu uzytkowego› |› ______________________› |wywolanie podprogramu |› |P=USR(34816,ADR(BUF$))|› ______________________› |› |› ___________› |POKE35915,0|› ___________› |›