SPIS
PODZIĘKOW ANIA
TREŚCI
......................................................................................................9
WPROWADZENIE ...................................................................................................... 10 R O ZD ZIAŁ 1 OBSŁUGA EDYTO RA ............................................................................................. 12 1.1 ED YCJA PROGRAMU .............................................................................12 Menu opcji ed yto ra ................................................................................. 12 Linia statusow a .........................................................................................13 Okno e d yto ra ............................................................................................ 13 T ry b bezpośredni .....................................................................................15 Wyszukiwanie procedur ...........................................................................16 "Z w ija n ie ” procedur ................................................................................. 16 Wyszukiwanie i zamiana tekstu ............................................................17 Wyrzucanie i przenoszenie bloków tekstu .......................................... 17 1.2 ŁADOWANIE I ZAPISYW ANIE PROGRAMU .................................. 18 Okno przeglądania dysku ......................................................................18 Zapisyw anie program u w B a sic'u ................................................... ^19 Przeglądanie plików ................................................................................20 Wybór sta cji dysków .............................................................................. 20 Wybór katalogu program ów z dysku .................................................20 Ustawianie ścieżek plików .................................................................... 20 Korzystanie z okna przeglądania dysku w program ie ................21 1.3 PROGRAMY RÓWNOCZESNE I POMOCNICZE (AKC ESO R IA) .21 Program y równoczesne ...........................................................................21 Program y pomocnicze ............................................................................ 22 1.4 SPIS ROZKAZOW EDYTORA .... 23 Menu głów ne ............................................................................................. 23 System menu ............................................................................................. 24 Blocks menu ...............................................................................................24 Search menu ............................................................................................. 25 Klaw isze edycji programu .................................................................... 25 Zamiana program ów w edytorze .................................................... ...26 Ustawianie znacznika .............................................................................. 26 1.5 DEFINIOWANIE KLAW ISZY FUNKCYJNYCH ................................. 27 R O ZD ZIAŁ 2 PODSTAWOWE Z A S A D Y PROGRAMOWANIA W AMOS B A S IC ’U ..........29 2.1 ZMIENNE .....................................................................................................29 Nazwy zmiennych .....................................................................................29
2.2 2.3 2.4 2.5
T ypy zmiennych ........................................................................................29 Przypisyw anie zmiennym w a rto ś c i ......................................................30 LIC ZB Y ......................................................................................................... 30 PODSTAWOWE OPERACJE AR YTM ETYC ZN E ............................... 31 OPERACJE NA ŁAŃCUCHACH ............................................................ 32 E T Y K IE T Y I PROCEDURY ....................................................................32 E tykiety ........................................................................................................ 32 Procedury ................................................................................................... 33 Zmienne globalne I zmienne lokalne ..................................................34 P aram etry procedur ................................................................................ 35 W yprowadzanie w a rto ści z procedury .............................................. 36 Wychodzenie z procedury ...................................................................... 36
R O ZD ZIAŁ 3 BANKI PAMIĘCI .......................................................................................................37 Typy banków ........................................................................................ '...37 R ezerwowanie I usuwanie banków ......................................................38 Param etry położenia banków ................................................................39 Ładowanie I zapisyw anie banków na dysk ..................................... 39 R O ZD ZIAŁ 4 OPERACJE N A ŁAŃCUCHACH ..............................................................................41 R O ZD ZIAŁ 5 TABLIC E ...................................
44
R O ZD ZIA Ł 6 GRAFIKA .................................................................................................................... 46 K o lo ry .......................................................................................................... 46 Rysowanie lln ll .......................................................................................... 47 Wypełnianie fig u r ...................................................................................... 49 T ry b y w yśw ietlania g ra fik i ................................................................... 51 Zaawansowane techniki ..........................................................................52 R O ZD ZIA Ł 7 INSTRUKCJE STERUJĄCE ..................................................................................... 53 7.1 INSTRUKCJE SKOKOW ......................................................................... 53 7.2 INSTRUKCJE WARUNKOWE ........................................................54 7.3 INSTRUKCJE PĘTLI .............................................................................. 55 7.4 INSTRUKCJE PRZERW ANIA PROGRAMU ........................................ 56 7.5 INSTRUKCJE SKOKOW OKRESOWYCH ....................................56 7.6 PROGRAMOWE W YŁĄCZANIE B R EAK ................................... 57 7.7 OBSŁUGA BŁEDOW .................................................................................. 57
R O ZD ZIAŁ 8 TEKS T I OKNA ....................................................................................................... 59 8.1 TE K S T ....................................................................................... __ Zaawansowane komendy tekstow e ...................................................^.65* C 8 .2 O K N J P .......................................................................................................... .66 Definiow anie i zmiana p aram etrów okien ....................................... 66 Suwaki (lis tw y przew ijania) ............................................... Fonty .......................................................................... .*............................... 70 Tekst graficzny ....................................................................
59
69
70
R O ZD ZIAŁ 9 OPERACJE AR YTM ETYC ZN E ............................................................................. 73 Funkcje trygonom etryczne ......................................................................73 Inne funkcje elementarne ....................................................................... 74 Generowanie liczb pseudolosowych ...................................................75 inne operacje arytm etyczne ..................................................................76 R O ZD ZIAŁ 10 EKRANY ..................................................................................................................... 77 10.1 DEFINIOWANIE EKRANÓW ......................................... O tw ieranie i zamykanie ekranów ........................................................77 Czyszczenie ekranu .................................................................................79 10.2 SPECJALNE TR Y B Y EKRANU .......................................................... 79 E x tra H a lf-B rig h t (EHB) .......................................................................79 H o ld a nd M odify (HAM ) ........................................................................ 79 10.3 ŁADOWANIE I ZAPISYW AN IE EKRANU NA DYSK ................. 80 10.4 OPERACJE EKRANOWE .......................................................................81 Przesuwanie ekranu .................................................................................81 Manipulowanie ekranami ........................................................................ 82 Operowanie za w a rto ścią ekranu .........................................................85 Przełączanie ekranów ............................................................................. 86 Synchronizacja ekranu ............................................................................88 10.5 KOLORY EKRANU ..................................................................................88 10.6 EFEKTY SPECJALNE ............................................................................88 10.7 ZM IENIANIE C O P P E R U S TA .............................................................. 93 TOM
II
R O ZD ZIAŁ 11 S P R ITE’ Y I B O B ’Y ..................................................................... 11.1 S p rlte ’y ....................................................................................................100 Podstaw ow e zasady tw orzenia i używania s p rite ’ó w ............... 100 K o lo ry a p rlte ’ó w ....................................................................................102
7
K ontrola s p r ite 'ów ................................................................................ 103 11.2 B o b ’y ..........................................................................................................104 Podstaw owe zasady tw orzenia I używania b o b ’ó w ..................... 104 K ontrola b o b ’ó w ..................................................................................... 11o 11.3 STEROWANIE OBIEKTAMI RUCHOMYMI ......................................113 Wskaźnik myszy ......................................................................... 113 J o y s tic k .................................................................................................... 114 Wykrywanie k o lizji obiektów ............................................................... 115 Wyłączanie systemu aktualizacji położeń obiektów ...................... 118 R O ZD ZIAŁ 12 AMAL ..........................................................................................................................119 Podstawow e zasady ...................................................................... 119 Zapoznanie z A M A L ’em ......................................................................120 Przesuwanie obiektu .............................................................................. 121 Anim acja ..................................................................................................123 Petle ...........................................................................................................124 Zmienne I wyrażenia .................................... 124 O peratory .................................................................................................125 Instrukcja warunkowa .......................................................................... 125 Instrukcja p ę tli .......................................................................................126 Złożone sekwencje ruchów ................................................................ 126 A u to te s t ................................................................................................... 127 Wprowadzenie program u w A M A L ’u ........... 129 K ontrola AM A L 'a z B a s ic ’a ...............................................................130 C zęstotliw ość aktualizacji położeń obiektów .................................131 Wyjście poza lim it 1 6 -tu obiektów ..... ............................................... 131 Wyszukiwanie błędów w program ie wA M A L ’u ............................ 132 Pakiet komend kom patybilnych ze S T O S ’em .............................. 132 Lista błędów AMAL 'a ........................................................................134 Lista komend A M A L ’a .......................................................................... 136 Lista funkcji AMAL ’a .............................................................................136 R O ZD ZIAŁ 13 TWORZENIE TŁA PROGRAMU .......................................................................... 137 Ikony ...........................................................................................................137 Bloki ekranu ............................................................................................138 R O ZD ZIAŁ 14 TWORZENIE I KO R ZYS TA N IE Z WŁASNYCH MENU .............................. 141 Korzystanie z menu .............................................. -...............................141 Tw orzenie prostego menu .................................................................. 141 O dczytywanie prostego menu.......... .............. 143
Zmiana wyglądu menu .......................................................................... 143 H ierarchia menu ..................................................................................... 144 Obsługa opcji menu ............................................................................... 144 K la w ia tu ra a menu ...............................................................................146 Komendy sterow ania menu ............................. ;.................................. 148 Komendy w łączone do menu ............................................................. 149 A lternatyw ne typy menu ...................................................................... 153 Ruchome menu ............................................................. 154 Program owe przenoszenie menu ........................... 156 Wyświetlanie menu w miejscu położenia wskaźnika ................. 156 R O ZD ZIAŁ 15 DZWIEK ......................................................................................................................157 15.1 PROSTE EFEKTY DŹWIĘKOWE ....................................................... 157 15.2 K A N A ŁY DŹWIĘKOWE .........................................................................158 15.3 SAMPLE ...................................................................................................158 O dtw arzanie s a m p le l ........................................................................... 158 Tw orzenie banku sam ple’i ......................................................... 160 15.4 M UZYKA ................................................................................................ 161 O dtwarzanie gotow ych utw orów ......................................................161 O dtw arzanie z nut ................................................................................ 162 Zmiana barw y i obwiedni dźwięku .................................................. 163 15.5 MOWA ...................................................................................................... 166 15.6 FILTR WYSOKICH CZĘSTOTLIWOŚCI ......................................... 167 R O ZD ZIAŁ 16 KLAW IATURA ......................................................................................................... 168 16.1 OBSŁUGA POJEDYNCZYCH KLA W ISZY .................................... 168 16.2 WPROWADZANIE DANYCH I POLECEŃ .......................................170 R O ZD ZIAŁ 17 INNE KOMENDY POMOCNICZE ......................................................................171 17.1 KOMENTARZ .......................................................................................... 171 17.2 PRZECHOWYWANIE LIS T DANYCH .............................................. 171 17.3 C ZAS W PROGRAMIE ........................................................................ 172 17.4 WARTOŚCI LOGICZNE ....................................................................... 172 R O ZD ZIAŁ 18 WSPÓŁPRACA Z URZĄDZENIAMI ZEWNĘTRZNYMI ................................173 18.1 S T A C JA DYSKÓW ...............................................................................173 Wybieranie katalogu ..............................................................................173 Podstawowe operacje dyskowe ........................................................ 174 Wybieranie pliku ..................................................................................... 174
f
Uruchamianie program u A M O S ’a z dysku ..................................... 175 Spraw dzanie obecności pliku ..............................................................175 O peracie na plikach ..............................................................................175 Pliki sekwencyjne ................ 176 P liki o bezpośrednim dostępie ..........................................................178 18.2 DRUKARKA ............................................................................................. 180 18.3 INNE U R ZĄD ZEN IA ZEWNĘTRZNE ................................................180 R O ZD ZIAŁ 19 KOMPENSACJA EKRANU ................................................................................... 182 R O ZD ZIA Ł 20 KOD MASZYNOW Y ............................................................................................... 183 Konwersja liczb ..................................................................................... 183 Zmienianie I odczytyw anie kom órek pam ięci ............................... 183 Operacje binarne .................................................................................... 184 Używanie jeżyka assem blera ............................................................. 186
ROZDZIAŁ 21 INNE INSTRUKCJE DLA ZAAW ANSOW ANYCH ......................................... 188 K orzystanie z b ib lio te k system owych ................. 188 Wnetrze A MOS 'a .................................................................................... 189 Maksymalne w ykorzystanie pam ięci ................................................. 189 Obszar zmiennych ..................................................................................190 Obsługa program ów pom ocniczych (akcesoriów ) ........................ 191
PODZIĘKOWANIA
Na w stępie chciałem podziękować wszystkim , któ rz y przyczynili się do tego, abym któregoś dnia usiadł i zaczął p rzygo to w yw a ć to op ra co wanie, a przede w szystkim : □ M arkowi Lisowskiemu, bo to on właśnie w p ro w a d ził mnie z po wrotem w św iat kom puterów po 2-letnieJ przerw ie, □ Jego kumplowi o kryptonim ie Roman S o ft,, bo to on p rzyg o to w a ł wydruk tekstu angielskiego (b ył on na dyskietce pod Cygnusem), □ D arkow i Sciepuro, bo to on pożyczył mi sp rzęt, na którym mogłem wygodnie s tw o rzyć źró dło w ą w ersję tekstu, □ firm ie "P A L M A ", a w łaściw ie jej szefom, bo zechcieli w ydruko w ać moje dzieło, □ Ani Lisow skiej, bo to le ro w a ła to , że praw ie nie odryw ałem się od kla w ia tu ry pisząc ten tekst. □ Leszkowi Szybkowskiemu, bo to on um ożliw ił mi term inowanie w zawodzie tłum acza technicznego, □ w szystkim Francuzom . Anglikom i Amerykanom, któ rzy bardziej łub mniej przyczynili się do pow stania A M O S ’a i angielskiej w ersji opisu do niego, □ a także Bogu, u strojo w i i innym siłom znanym i nieznanym, za to. że um ożliw iły mi tak fajną pracę i zabawę, Jaką Jest opracow yw anie polskiej w e rsji opisu do najwspanialszego B a s ic ’a z jakim się dotąd spotkałem.
9
WPROWADZENIE
Jak wiadom o Am iga Jest komputerem o w ręcz gigantycznych moż liwościach. D otychczas Ich w ykorzystanie mogliśmy ogładać Jedynie w stw orzonych przez innych autorów demach l grach, m arzac Jedynie o tym , że może kiedyś w przyszłości opanujemy na tyle assembler, iż uda nam sle stw o rzyć coś, co przynajm niej odrobinę przypom ni cacka spro wadzane z Zachodu lub stw arzane przez rodzim ych nielicznych dobrych koderów . Ale oto ukazało sie nareszcie narzędzie, któ re um ożliwi Ci tw o rzenie w B a sic'u rzeczy, któ re dotychczas w yda w a ły sie osiągalne tylko dla Jeżyków w ysokiego poziomu. Jest to oczyw iście w spaniały AMOS B a sic Franpois L io n e fa . Jego poprzednikiem Jest STOS, znany przez użytkowników kompu te ró w A ta r i ST. Jego koncepcja Jest analogiczna do A M O S ’a, ale przy przenoszeniu na Am igę praktycznie nic poza nią sie nie ostało, ponie w aż p raw ie w szystkie procedury zostały napisane od nowa tak, aby w ykorzystać do maksimum w szelkie m ożliw ości Am igi. Po zapoznaniu się z A M O S ’em trudno się oprzeć wrażeniu, że z tego komputera da się '’w ycisnąć” coś w ięcej nie schodząc do program ow ania w assemblerze. Na A M O S ’a składa się wspaniała szata graficzna, wygodny edytor I ponad 500 komend um ożliw iających bardzo p roste, szybkie i skuteczne operowanie dźwiękiem , g ra fika , s p r ite ’a m i, b o b ’am i I h a rd w a re ’em. Posiada on własny wewnętrzny język sterow ania animacja AM A L, którego program y wykonywane sa w tra kcie przerw ań systemowych, l k tó ry w niczym nie przeszkadza głównemu program ow i w B a s ic ’u. A M O S ’a można tra k to w a ć zarów no Jako zw ykły B asic, bardziej zresztą przypom inający np. P ascala, jak również jako wspaniałe narzę dzie do tw orzenia g ie r, któ re Jak tw ie rdza autorzy, bez problemu moga dorów nyw ać tym , którym i się na co dzień bawim y. A o to adres człow ieka, którem u można przesyłać wszelkie uwagi na tem at A M O S ’a, a także własne stworzone na tym program ie g ry i inne program y. Jeżeli chcemy, aby ich prom ocja zajał się Mandarin S o ftw a re :
10
Richard Vanner, Development Manager Mandarin S oftw are AdHngton Park. Adlington M acclesfield SK 10 4NP W przypadku kom ercjalnego rozpowszechniania program u napisane go w A M O S -ie, autor wymaga umieszczenia w widocznym miejscu tekstu ” AMOSM M 1990 M andarin/Jawx
Życzę powodzenia i dobrej zabawy ! W rocław. 1 9 9 1 -0 7 -2 0 O pracow ał na podstaw ie w ersji angielskiej: Paweł "C rom a” Koronkiew icz
11
R O Z D Z IA Ł O BSŁU G A
1
EDYTO RA
E dytor A M OS’a daje użytkow nikow i do dyspozycji szeroka gamo różnych udogodnień. Zapew niając duże m ożliw ości jest on równocześnie bardzo p ro sty w obsłudze. Każda komenda może być wykonana zarów no bezpośrednio z ekranu, jak I z klaw iatu ry. Jest to na tyle proste, że przy odrobinie doświadczenia w pracy z komputerem można z niego ko rzystać praktycznie bez żadnego przygotow ania. Dla krótkiego zapoznania sio z nim proponuje różne samodzielne próby uruchamiania program ów (np. Number Leap lub z katalogu Manu a ł) i różnych opcji z menu (oczyw iście przy zabezpieczonej dyskietce), a dopiero potem wyszukanie w dalszej części (ewentualnie w spisie rozkazów edytora) odpowiedzi na pojaw iające sle przy tym pytania. Jedną z największych zalet jest oddzielenie okna edytora od g łó wnego ekranu program u. Dzięki temu możemy w każdej chw ili p ow rócić do trybu edycji w ciskając Esc i odnajdując kursor w miejscu przerw ania program u ( CTRL+C) lub tam. gdzie go pozostaw iliśm y .jeżeli posiadamy dużą pam ięć, to można do niej załadow ać ró w nocześnie kilka program ów w AMOS Basic'u. Każdy z nich można pod dawać edycji niezależnie, a także swobodnie w ybie rać pomiędzy nimi w ciskając tylko dwa klaw isze edytora.
1.1 ED YC JA PROGRAMU M e n u opcji edytora
U góry ekranu znajduje sie okno menu z listą bezpośrednio dostę pnych opcji. Komenda może b yć błyskaw icznie wykonana przez w ciśnię cie nad odpowiednim polem lewego przycisku myszy. Każda ma także swój klaw isz funkcyjny. Poza menu widocznym na ekranie istnieje jeszcze pleć p rzełą cza nych zestawów, k tó re p o jaw iają sie po naciśnięciu któregoś z klaw iszy 12
Shift, A it, C trl albo lewej lub p ra w ej Am igi. Najważniejszy z nich to System menu w yśw ietlane po naciśnięciu S h ift’u lub praw ego klaw isza myszy. System menu zaw iera takie komendy, jak Load, Save, New itp. Tak Jak w głównym menu. w szystkie komendy mogą być wywołane przy użyciu lewego klaw isza myszy lub klaw isza funkcyjnego.
Linia statusowa L=1 C=1 T e x t= 40000 Chip=91000 Fast=0 E dit ¡nazwa Jako pierw sza od lewej mamy inform ację o tryb ie wprowadzania znaków (In s e rt/O v e rw rite ). Następnie jest linia I kolumna tekstu pod legająca edycji w danym momencie. T E X T : Podaje ilo ść pamięci dostępna dla okna edytora. Może być ona zmieniana komenda S e t b u ffe r z Search menu. CHIP: Podaje ilość dostępne] pamięci postaw ow ej. F A S T : Podaje ilość pamięci dostępnej na rozszerzeniu. E D IT : Nazwa program u aktualnie podlegającego edycji. Pojawia się po załadowaniu program u do pamięci iub zapisaniu na dysk, gdyż dopiero w tedy AMOS p rosi o jej wprowadzenie.
Okno edytora Okno edytora je st sercem całego A M O S ’a i pozw ala na w pisyw a nie program ów z kla w ia tu ry. Gdy rozpoczynasz pracę, kursor Jest zawsze ustawiony w lewym górnym rogu okna. Można go przesuwać używając klaw iszy kursora. Tekst może b y ć korygow any znak po znaku przy użyciu klaw iszy Delete I Backspace. D elete kasuje znak bezpośrednio pod kursorem , a Backspace na lewo od niego. Na próbę napisz kró tką linię: p rin t ’’AM OS"
13
Kłedy wciśniesz RETURN, Tw oja nowa Hnla zostanie wprowadzona do AMOS B asic'a. W szystkie komendy AMOS zapisuje małymi literam i, ale zaczynając od dużej. Tak w iec powyższa linia bedzie w yśw ietlona w sposób następujący: Print "A M O S" Podobnie w szystkie zmienne i procedury w A M O S ’ie pisane są du żymi literam i. U ła tw ia to odnajdywanie ewentualnych błędów w p ro g ra mie. Załóżm y na p rzykła d , źe wprowadzam y linie: input "Jak masz na imie : ” ;nameS Bedzie ona w yśw ietlona jako: input "Jak masz na imie : ” ;NAME$ Wypisanie np. IN PU T lub Name w skazyw ałoby natychm iast na w y stąpienie jakiegoś błędu. A teraz ustaw kursor pod sw oją Instrukcją P rin t I w pisz nastę pujący program : . Centre ”
” Do X $ = ln k e y $ :lf X $ < > " ” Then Print X$ Loop Nie zapomnij w cisnąć RETURN po skończeniu w pisyw ania każdej linii. Wielkość lite r, jakich użyjesz przy wpisywaniu tego program u Jest obojętna, zostaną one i tak zamienione na w łaściw e. Teraz używ ając strz a łe k przesuń kursor w dowolne miejsce p ro g ramu. Następnie uruchom go w ciskając F1. Okno e d yto ra zniknie, a na jego miejscu pojaw i sie samodzielny ekran program u. Program wym aga od Ciebie napisania czegoś. Łatw o można zauważyć, że w cale nie zmienia to pozycji kursora w oknie edy to ra . Są to po prostu dw a ca łko w icie niezależne kursory I okna.
14
Gdy skończyłeś, w ciśnij CTRL+C. aby p rzerw ać program . Na ek ranie poiaw i sie teraz komunikat: Program Interrupted at line 4 ' >>>Loop Wciskając w tym momencie spacje pow rócilibyśm y z pow rotem do edytora, ale skoro zapoznaliśmy sie z nim już troche, przenieśmy sie teraz do tryb u bezpośredniego. Przywołujem y go w ciskając Esc. »
T ry b bezpośredni T ry b ramów.
bezpośredni
daje
m ożliw ość
szybkiego
testow ania
p rog
Wszystkie komendy trybu bezpośredniego są wprowadzane w spec jalnym oknie ca łko w icie niezależnym od okna program u I edytora. Uży w ając strza łe k możesz przesuwać je w góre lub w dół. U góry okna znajduje sie 20 komend, któ re mogą być w prow adza ne przy użyciu klaw iszy funkcyjnych w połączeniu z lewą lub praw ą Amigą (klaw isze po obu stronach sp acji). W try b ie bezpośrednim możesz wykonywać wszelkie instrukcje B a s ic ’s z w yjątkiem jedynie pętli l procedur. Pozostaw ia on także dos tęp do w szystkich zmiennych globalnych. Zasady edycji i wprowadzania komend są takie same jak w edytorze. Powtórzenie któ re jś z ostatnich 10 uprzednio w prow adzonych komend um ożliwiają klaw isze F 1-F10 (F1 ostatnia w prow adzona). O to pare przykład ów : Print 42. ANSWER=6 : Print ANSWER*9, Curs O ff Ważne Jest aby wiedzieć, że to. co robimy w tyble bezpośrednim nie ma absolutnie żadnego w pływ u na program znajdujący sie w ed yto rze lub pam ięci i odw rotnie, okno trybu bezpośredniego nie może zostać zmienione z poziomu programu. Do okna edytora wracam y w ciskając Esc. 15
Wyszukiwanie procedur Przy edycji długich program ów często pojaw ia sie kłopot z odna lezieniem początku d e finicji procedury. K law isz A lt w połączeniu ze strza łką w górą lub w dół um ożliwia szybkie odnalezienie początku nas tępnej lub poprzedniej definicji procedury. Dla przykładu ustaw kursor na początku dowolnego program u (masz ich mnóstwo w katalogu Manuaf) l wciśntl A lt+ S trz a łk a w dół. Kursor natychm iast znajdzie sie na początku pierw szej procedury w program ie. Możesz p o w ta rza ć te czynność przenosząc sie do kolejnych procedur.
"Z w ija n ie " procedur Jeśli Tw ój program zaw iera dużo różnych procedur, bardzo ła tw o może stać sie nieprzejrzysty. W zachowaniu większej czytelności program u pomaga funkcja Fold. dzięki któ re j w listingu mamy ty lk o nazwę procedury, zam iast jej całej. Dla przykładu ustaw kursor w dowolnym miejscu w ew nątrz dow ol nej definicji procedury l w yb ie rz myszą opcje Fold/Unfold. Gdy to zrobisz cała procedura zniknie, zostanie jedynie pozostawiona jej nazwa. Pomimo tego program bedzie dalej d zia ła ł tak samo. Jedyną zmianą, jaką w ten sposób osiągnąłeś jest w ygląd program u w ed yto rze. Ponowne w ybranie opcji F o ld/U nfold w yw oła pow tórne ti
b y ć Indywidualnie rozw inięta przy użyciu o p cji Fold/Unfold. Możesz także rozw inąć w szystkie, używ alac opcji Open AU z Search menu.
Wyszifciwanle I zamiana tekstu W edytorze AMOS B a s ic ’s komendy wyszukiwania I przenoszenia znajdują sle w specjalnym Search menu. któ re może być wywołane z głównego menu albo myszą, albo klawiszem F1.
Wyszukiwanie Do wyszukiw ania ciągu znaków służy komenda Find, w yw oływ ana z Search menu myszą lub klawiszam i CTRL+F. Po jej wywołaniu zosta niesz zapytany o poszukiwany ciąg. Dla przykładu w ciśnij CTRL+F i w pisz Rem. E dytor bodzie szukał pierw szego ciągu Rem poczynając od m iejsca położenia kursora. Po znalezieniu ustaw i kursor na jego początku. Następny taki cią g można odnaleźć używ ając komendy Find N e xt (CTRL+N).
Zam iana tekstu Załóżm y, że chcemy zamienić w szystkie komendy P rin t na Rem. Można to osiągnąć używ ając komendy Repiace. N ajpierw należy określić ciąg, k tó ry chcemy w prow adzić. Wybierz w lec Repiace (CTRL+R), w pisz Rem i w ciśnij RETURN. Teraz musisz odnaleźć najbiiższee P rin t w yw ołując rozkaz Find i wpisując te komendą. Ponowne użycie Repiace spowoduje zamianę komend i przeniesienie do następnego P rin t (o iie istnieje).
1 7
Wyrzucanie I przenoszenie bloków tekstu Bloki tekstu program u usuwamy z e dyto ra do pamięci używ ając funkcji Cut. N ajpierw podśw ietlam y odpowiednie w iersze ustaw lajac na nich wskaźnik myszy l w ciskając p raw y klaw isz. Następnie w ybieram y funkcję Cut(CTRL+C) z B ło ck menu. Podświetlone w iersze zostanę usunięte do pamięci. Usunięte w iersze mogą w każdej chw ili być w staw ione w dowolne miejsce program u p rzy użyciu funkcji Paste(CTRL-ł-P). Z osta ję one w sta wione w miejsce aktualnego położenia kursora.
1.2 ŁADOWANIE I ZA PISYW AN IE PROGRAMU Będziemy obecnie om awiać różne procedury służęce do zapisyw a nia i odczytyw ania program u z dysku. Jak zw ykle, mogę one być w y wołane zarówno myszę. Jak I dwoma klawiszam i z kla w iatury. N ajszyb szym sposobem załadow ania program u Jest w ciśnięcie któ re jś A m ig i I klaw isza L. Zapoznamy sie te ra z z oknem menu dysku. Jeżeli m iałeś już do czynienia z podobnym systemem obsługi menu dysku. A MOS nie powinien sp raw ić Cl żadnych niespodzianek. Jednakże ponieważ okno menu dysku jest integralna częścią A M O S ’a, lepiej zapoznać sie ze wszystkim i szczegółam i jego obsługi.
Okno przeglądania dysku A by w yb ra ć zbiór z dysku w ystarczy po prostu ustaw ić kursor na odpowiedniej nazwie. Zostaje ona w tedy rozjaśniona. A by załadow ać w ybrany zb ió r do pam ięci, trzeba wcisnąć dwii
18
W przypadku błędu należy ustaw ić mysz na Quit i wcisnąć lewy klaw isz. AMOS w strzym a wykonywanie polecenia i w yśw ietli komunikat N o t Done. Jako p rzykła d w łóż sw ój dysk z A M O S ’em do sta cji I w ciśnij AMIGA+L (LOAD). Jeśli poprzednio w prow adzałeś podane przykłady, AMOS zaproponuje Cl zapisanie aktualnego programu. O ile nie w p ro w adziłeś poprzednio nic specjalnie ciekawego, w ciśnij N. W innym p rz y padku kolejnych instrukcji poszukaj w dalszej części. Gdy już znalazłeś się w oknie menu dysku, poczekaj aż załaduje sie katalog głów ny, a następnie odnajdź I załaduj program H ith e re.AMOS. W edytorze pojaw i sie następujący listing: Rem HI there AMOS users Cis 0 Rem Clear the screen w ith colour zero (Czyszczenie ekranu) Do Rem get some random numbers (w ybieranie liczb losowych) X = R n d (3 2 0 ): Y = R n d (2 0 0 ): l=R nd(15) :P=Rnd(15) Ink l,P:Rem add a little colour (ustawienie koloru) T e xt X ,Y ,” Hi th e re !” :Rem graphic te xt (wypisanie tekstu) Loop Teraz możesz na p rzykład ustaw ić kursor tekstow y na "HI th e re !” i w prow adzić sw ój tekst. Wciśnij F1, aby uruchomić program . Ekran program u w ypełni sie dziesiątkam i kopii Tw ojego napisu. A by przerw ać w ciśnij CTRL+C.
Zapisyw anie program u w B a sic’u Wróć do okna ed yto ra I w ciśnij A L T + S aby zapisać na dysk b ie żący program . Możesz także trzym ając praw y klaw isz myszy w ciśnięty kliknąć lewym na polu Save A s z System menu. W obu przypadkach pow rócisz do okna menu dysku. Teraz należy w p ro w a dzić z klaw iatury nazwę nowego pliku. W trakcie w pisyw ania ukazuje sie ona w małym prostokącie na dole okna. Gdy skończysz I wciśniesz RETURN, program zostanie zapisany na dysk. 19
Przeglądania plików Jeśli na dysku Jest dużo program ów , okno nie Jest ich w stanie w szystkich równocześnie w yśw ie tlić. Możesz przesuwać okno wzdłuż lis tingu używ ając suwaka (lis tw y przew ijania) znajdującego sle po lewej stronie.
Wybór s ta c ji dysków Na p ra w o od menu dysku Jest lista dostępnych sta cji dysków. Możesz Je swobodnie w ybierać Jednym kliknięciem myszy. Po w ybraniu nowej s ta c ji, nowe menu zostanie natychm iast wyświetlone.
Wybór katalogu program ów z dysku Cześć zb io ró w ma nazwy poprzedzone gw iazdką *. Każdy z ta kich katalogów za w ie ra w sobie po kilka lub kilkanaście plików . Możesz w prow adzić k tó ry ś z katalogów w yb ie ra ją c go po prostu lewym kla w i szem myszy. Możesz te ra z w ybierać p liki z nowej listy. Zauważ, że po w yższa o peracja udaje sie Jedynie ze zbioram i z rozszerzeniem .AMOS (można to oczyw iście zmienić w pisując z kla w ia tu ry ścieżką I inne ro z szerzenie, ew. *). Kiedy Już o tw o rzyłe ś ta ki katalog, możesz "u trw a lić ” go przez SETDIR. Następnym razem, gdy będziesz przeg lą da ł ka ta lo g dysku, au tom atycznie o tw o rz y sle w ybrany przez Ciebie zb ió r. Do poprzedniego katalogu można w ró c ić w yb ie ra jąc rozkaz PARENT.
Ustawianie ścieżek plików S tandardow o AMOS wyszukuje zb io ry z rozszerzeniem .AMOS. Jeśli chcesz załadow ać zb ió r z innym rozszerzeniem, np. .B A K . możesz to z ro b ić w p row adzając bezpośrednio ca łą Jego ścieżką. Można to zro b ić następująco: S trza łką do g ó ry na kla w iatu rze ustaw kursor tekstu w oknie tuż pod katalogiem (PA TH windo w). T e ra z w ybierz nową ścieżke I w ciśnij 20
Return. Więcej inform acji nt. składni możesz znaleźć w opisie komendy DIR. UWAGA: AM OS używa sw oich własnych specyficznych opisów ścieżek, różniących się nieco od standardu A m lg aD os’u. Jeżeli nie jesteś pewien w prow adzanej ścieżki, to wym aż całą linię- aż do symbolu sta c ji 1 w ciśnij Return. Będziesz w tedy m ógł się zapoznać z pełną listą zbiorów na dysku.
K orzystanie z okna przeglądania dysku w program ie Okno przeglądania dysku może być także w yw ołane z poziomu program u. Dla zadem onstrowania tego, wejdź w try b bezpośredni I w pisz następującą linię: P rlnt F sel$(*.*> i
Gdy w ybierzesz p lik. Jego nazwa zostanie wypisana na ekranie. W dalszej części opisu znajdziesz dokładny opis tej komendy.
1.3 PROGRAMY RÓWNOCZESNE I POMOCNICZE (AKC ESO R IA ) Program y równoczesne Chociaż w danym momencie możesz prow adzić edycję tylko Jedne go program u, to w pam ięci można ich przechow yw ać w tym czasie do wolną Ilość, a jedynym ograniczeniem Jest tu ta j tylko je j pojemność. Program znajdujący się poza edytorem uruchamiamy rozkazem Run Other z menu. Załóżm y, na p rzykła d , że napotkasz w swoim program ie na jakiś poważny problem . Możesz swobodnie przerzucić go do pam ięci i do w oli eksperym entować ko rzysta ją c bez ograniczeń z e dyto ra . Gdy już znaj dziesz rozw iązanie, przerzucasz je funkcją Cut do pam ięci, przenosisz do e d yto ra sw ól p rog ra m I w prow adzasz popraw ioną część funkcją Pastę.
2 1
Masz także m ożliw ość sta łe g o przechow yw ania w pamięci różnych program ów pomocniczych, np. do tworzenia s p rfte ’ów. okien Itp. Mogą one mleć także m ożliw ość korzystania z banków pamięci głównego p ro gramu. Dla zapoznania sle z systemem zamiany program ów wpiszm y w edytorze: Print *T o Jest prog ra m nr 1 " Boom Przenieśmy ten program do pam ięci rozkazem Push(AM!GA+P). Po wpisaniu nazwy program u okno edytora zostanie wyczyszczone. A by przekonać sie. że Jest to ca łko w icie nowe okno e dytora, napiszmy ko leiny program ik: P rint ” To jest program nr 2 " Shoot Możemy go teraz uruchomić przez R u n (F l). Możesz także w każ dej chw ili p o w ró cić do poprzedniego program u rozkazem FHck. Wciśnij AM IG A+F I w pisz nazwę drugiego program u. W edytorze pojaw i sle z pow rotem pierw szy program . Możemy te program y zamieniać ze sobą dowolną ilość razy. a każdy z nich może posiadać własny zestaw okien i banków pamięci. Opisaliśmy tu ta j równoczesne użycie dwóch program ów , ale o czy w iście może być ich dowolna Ilość. Możesz miedzy nimi w ybierać uży w ając rozkazów Run Other I E d it Other. Pojawi sie w tedy specjalne o k no do pryeglądania program ów podobne do okna przeglądania dysku.
Programy pomocnicze Program y pomocnicze (akcesoria) d la odróżnienia od zw ykłych program ów w B a sic'u posiadają rozszerzenie .ACC. ale mogą być za ła dowane do pam ięci I uruchamiane tak Jak każdy łm y program rozkazam i L o a d Others I Run Other.
22
Można także załadow ać do pam ięci w szystkie program y pomocni cze (z rozszerzeniem .ACC) rozkazem A c.N e w /L o a d z System menu (pod praw ym klawiszem m yszy). Rozkaz ten kasuje z pamięci w szystkie program y pomocnicze i ładuje ich nowy zestaw z dysku. Dla przykładu, możesz w łożyć do sta cji dysk z A M O S ’em i kliknąć na Ac.N ew /Load. Do pamięci zostanie załadow any program HELP. Jest to program specjalny, gdyż możemy go w każdej chw ili w yw ołać klawiszem o tej samej nazwie. Są w nim zaw arte w szystkie niezbedne inform acje o p ro gramach pomocniczych (accessory program s) dołączanych do AMOS B a s ic 'a , W tra kcie zapoznawania sie I p ra cy z A M O S ’em będziesz w ielok rotnie k o rzysta ł z tych program ów. Pomogą Ci one tw o rzyć swoje w ła sne program y. P atrz także: Obsługa p rog ra m ó w pomocniczych.
1.4 SPIS ROZKAZOW EDYTORA M e n u głów ne
RUN (F1) TE ST (F2) INDENT (F3) BLOCKS MENU(F4) SEARCH MENU(F5) RUN OTHER (F6) EDIT OTHER(F7) OVERWRITE (F8) FOLD/UNFOLD(F9)
uruchamia program z edytora spraw dza popraw ność składniową program u porządkuje tekst przesuwając odpo wiednie w iersze w praw o w yśw ie tla Blocks menu w yśw ie tla Search menu uruchamia program z pamięci w prow adza do e d yto ra program z pamięci przełącza try b w prowadzania zna ków zw ija i rozw ija procedury
23
System menu LOAD (SFT+F1/AM IG A+L) S A V E (SFT+F2/A M IG A +S ) SAVE AS (SFT+F3) MERGE (SFT+F4) MERGE ASC II (SFT+F5) AC.NEW/LOAD (SFT+F6) LOAD OTHERS (SFT+F7) NEW OTHER (SFT+F8) NEW (SFT+F9) QUIT (SFT+F10)
ładuje prog ram w AMOS B asic'u zapisuje bieżący program zapisuje program zm ieniając nazwę ładuje program I dołączą w miejscu położenia kursora czyni j.w . z blokiem A S C II ładuje nowy zestaw program ów po m ocniczych ładuje pojedynczy program pomocni czy kasuje program y pomocnicze z pa mięci kasuje bieżący program w yjście z AM O S'a pod kontrole CLI
Blocks menu BLOCK BLOCK BLOCK BLOCK
STA R T (C TRL+B/F1) END (CTRL+E/F6) CUT (C TR L+C/F2) PASTE (C TR L+P/F7)
BLOCK MOVE (CTRL+M/F3) BLOCK STORE (C TRL+S/F8) BLOCK HIDE (C TR L+H /F4) BLOCK S A VE (CTRL+F9) SAVE AS C II (CTRL+F5) BLOCK PRINT (CTRL+F10) Blok możemy klaw isza rhyszy.
oznaczyć
początek bloku koniec bioku usuwa blok do pamięci umieszcza b lo k z pam ięci w miejscu położenia kursora przenosi blok w położenie kursora kopiuje blok do pam ięci pozostaw ia blok bez zmian zapisuje blok na dysk jako program zapisuje blok jako plik tekstow y w yprow adza blok na drukarkę także
24
bezpośrednio, używaJac
praw ego
Search menu FIND (A LT+F1) FIND NEXT (A L T + F 2 ) FIND TOP (A L T + F 3 ) REPLACE (A L T + F 4 ) przed FIND po FIND REPLACE A L L (A L T + F 5 ) po FIND L O W o U P (A LT+F6) OPEN ALL (A L T + F 7 ) CLOSE ALL (A LT+F8) SET TE X T B (A L T + F 9 ) SET T A B (ALT+F10)
wyszukuje w program ie cia o do 32 znaków wyszukuje następny ciąg po odnale zionym jak FIND. ale od początku program u zależnie od momentu użycia: oczekuje w prow adzenia ciągu zna ków do wpisania na m iejsce sta re go zamienia odnaleziony cią g na nowy i przeskakuje do następnego zamienia w szystkie odnalezione zmienia kierunek poszukiwania rozw ija w szystkie procedury w p ro gram ie zw ija w szystkie procedury w program ie ustala w ielkość e dytora ustaw ia liczbę spacji pod klawiszem Tab
K law isze e d ycji program u Backspace Del Return S F T fB C K S CTRL+Q CTRL+U CTRL+Y CTRL+I S trza łki
kasuje znak na lewo od kursora kasuje znak w miejscu położenia kursora przenosi cią g położony za kursorem w dół kasuje bieżącą linie kasuje cześć lin ii na praw o od kur sora p rzyw ra ca skasowana linie Iłto jej cześć kasuje linie położona poniżej kursora w sta w ia wolną linie w pozycji kur sora przesuwają kursor o jeden znak w dowolnym kierunku 25
przesunięcie kursora o słow o przesunięcie na początek iub koniec strony przeniesienie do poprzedniej/następ nej strony przeniesienie do początku/końca program u przesuwa tekst pozostaw iając kursor w miejscu przeniesienie do najbliższej etykiety lub definicji procedury przesuwa linię do następnej pozycji tab ulato ra przesuwa linię do poprzedniej pozy c ji tabulatora ustala w ielkość pozycji tabulatora
SFT+lewo, praw o SFT+góra, dół C TRL+góra, dół SFT+C TR L+góra. dół AMIGA+kierunek A L T + g ó ra, dół TAB SFT+TAB C TRL+TAB
UWAGA: Po w ciśnięciu Caps Lock nie działała klawisze kursora I Backspace.
Zamiana program ów w edytorze AMIGA+P AMIGA+F AM IG A+T
przenosi program z edytora do pamięci zamienia program w edytorze z programem w w ybiera kolejny program z pamięci
Ustawianie znacznika C T R L + S F T + (0 -9 ) CTRL+(0— 9)
ustaw ia znacznik na pozycji kursora ustaw ia kursor na wybranym znaczniku
26
pamięci
1.5 DEFINIOWANIE KLA W ISZY FUNKCYJNYCH Gdy wciskam y któ ry ś klaw isz Am iga pojaw ia nam się menu ko mend, któ re możemy w yprow adzić na ekran wciśnięciem dodatkow o jed nego z klaw iszy funkcyjnych. Z a w arto ść tego menu możemy zmieniać definiując zmienna Key$. KEY$(n)=kom enda W artości n od 1 do 10 odpow iadają menu lewej Am igi, a 11 do 20 praw ej, komenda może być dowolnym tekstem o długości maksymal nej 20 znaków. Zostanie on wpisany w miejscu położenia kursora w ca łości z w yjątkiem znaków: ’ (a po stro f) ’ (A lt+ a p o s tro f)
daje efekt wciśnięcia Return kom entarz, powoduje nie wypisyw anie dalszego tekstu
P rzykłady: ? Key$(1) K e y $ (2 )= "D e fa u lt” Key$(3)=*” T ylko kom entarz” Komendę tę można w ykorzystać do przygotow ania standardowych poleceń komunikacji z programem . Por. Examp!e3_02, W przypadku, gdy chcesz uzyskać efekt w ciśnięcia klaw isza, któ ry nie posiada odpow iadającego mu znaku A S C II, Jak na p rzykła d strza łka do góry, możesz użyć funkcji ScanS. S C A N $ (n[,m ]) Zmienna pozw alająca dopisać do zmiennej KeyS znak odpow iada jący wciśnięciu klaw isza o dowolnym kodzie równym n. a nie posiadają cym odpow iadającego mu znaku. W artość m określa z jakim klawiszem funkcyjnym ma być połączone użycie wybranego znaku. Form at m:
27
B it
K la w isz funkcyjny:
0 1 2 3 4 5 6 7
lew y S h ift p ra w y S h ift Caps L o ck CTRL lew y A lt p ra w y A lt lew a Am iga p ra w a A m iga
ZapalaJac odpow iednie b ity (nadając Im w a rto ść 1) uzyskujemy efekt odpow iadający w ciśnięciu określonego klaw isza specjalnego w ra z z klawiszem o kodzie n, np.: K e y $ (4 )= ” Wlersz w g ó re ” +Scan$($4C) K ey$(5)=*’S trona w góre"+Scan$($4C,% 10000) Wartość te j funkcji może b yć także swobodnie wypisyw ana na ek ranie lub przyporządkow yw ana dowolnej zmiennej, np.: KO M ENDA_1$=Key$(1)
28
ROZDZIAŁ
¡2
PODSTAWOWE ZASADY PROGRAMOWANIA W AMOS B A SIC ti
Podstaw y AM OS B a sic ’a nie odbiegają zb ytnio od powszechnie p rzyjętych standardów . Jest on jednakże jakby połączeniem B a s ic ‘a i innych, strukturalnych języków w ysokiego poziomu. Posiada także bardzo rozbudowany zastaw komend zaawansowanych, pozw alających na maksy malne w ykorzystanie m ożliw ości jakie daje h ard w a re A m ig i.
2.1 ZMIENNE Nazwy zmiennych Nazwa zmiennej może zaw ierać dowolne znaki o prócz spacji f mu si zaczynać się od lite ry , a nie może od komendy AM OS B a s lc ’a. Może natom iast zaw ierać komendy AM O S ’a w dalszej częóci nazwy, a spację można zastąpić znakiem Taką samą nazwę jak zmienna może posiadać także równocześnie procedura I etykieta.
T yp y zmiennych Podstawowym typem zmiennych są zmienne c a łk o w ite zapisywane w czterech bajtach I poprzez to za w a rte w granicach o d -1 47 .4 8 3 .6 4 8 do +147.483.648. O peracje na nich są dużo szybsze niż na zmiennych rzeczyw istych, w ięc w m iarę m ożliw ości zalecane je st ich stosowanie. Nazwę tw orzym y w g podanych w yżej zasad. Zmienne rze czyw iste wyróżniam y zakończeniem ¿'.Są także prze chowywane w czterech bajtach, a Ich zakres sięga od 1 E -19 do 1E18. W obliczeniach zachowywana je st dokładność d o siedmiu c y fr znaczą cych. P rzykłady to : P # . L IC Z B A # . T E S T #
29
Zmienne tekstow e kończone symbolem $, a Ich Jedynym ogranicze niem jest maksymalna długość tekstu 65.500 znaków.
Przypisyw anie zmiennym w a rto ści Przypisania zmiennej w a rto ści dokonujemy używ ając znaku ró w ności. np. ZM IENNA=10 A $ = ” Do w idzenia"
2.2 LIC ZB Y Liczby możemy umieszczać w program ie zarów no w postaci dzie siętnej. jak i binarnej lub heksadecymalnej. O to liczba 255 w po sta ci: D ziesiętnej: Heksadeczmalnej: Binarnej:
255 $FF %11111111
Wszystkie liczby użyte w program ie AMOS zapisuje od razu w postaci ca łko w ite j lub zmiennoprzecinkowej. Decyduje o tym użycie kro p ki dziesiętnej. Jeżeli wykonujemy operacje na obu rodzajach liczb, to wynik jest zawsze kodowany jako liczba rzeczyw ista. Należy więc pa m iętać. że operacja: A # = A # + 2 .0 jest dużo (ok.25%) szybsza od o p e ra cji: A#=A#+2 gdyż ta druga wymaga dodatkow o przekształcenia liczby całkow lej 2 w zm iennoprzecinkową. Dla bliższego zapoznania się z systemem zapisu liczb przez A M O S ’a wykonaj następujące p rzykła d y:
30
A = 3 ,1 41 :P rint A
(w ynik: 3)
Print 19/2
(w ynik: 9)
Print 19/2.0
(wynik 9.5)
2.3 PODSTAWOWE OPERACJE ARYTM ETYCZNE W w yrażeniach arytm etycznych mogą być używane następujące operacje podstaw ow e (w kolejności wg pierw szeństw a ich w ykonywania):
/ * MOD + AND OR NOT
potęga dzielenie i mnożenie moduł (reszta z dzielenia) dodawanie i odejmowanie logiczne AND (koniunkcja) logiczne OR (alternatyw a) logiczne NOT (zaprzeczenie)
INC zmienna Ta komenda to nic innego jak szybsze zmienna=zmlenna+1. DEC zmienna Na powyższej zasadzie zastępuje zmienna =zm ienna-1. ADD zmienna, krok [, minimum .maksimum] K rótsza w ersja komendy służy do szybkiego dodawania zmiennych całkow itych. Jest to 40% szybsze wykonanie komendy zmienna =zm ienna+krok. Dłuższa natom iast jest bardziej skomplikowana I odpowiada ko mendom: zm ienna=zmlenna+krok i f zmienna maksimum Then zmienna-minimum
31
Jak w idać w a rto ś ć zmiennej fest sta le utrzym ywana w podanych granicach. Komendą ta można w ykorzystać d o tw orzenia różnego rodzaju P*tH.
2.4 OPERACJE N A ŁAŃCUCHACH Zmienne tekstow e możemy dodaw ać: A $ = ” AM OS” + "B a s lc ” Print A$ (w ynik: AMOS Basic) lub odejm ować, to znaczy usuwać w szystkie ciągi zmiennej w ystępujące w pierw szej, np.: P rlnt ” AMOS B asic” - ” AMO”
znaków z
drugiej
(w ynik: S Basic)
Dopuszczalne są także porów nania na bazie kodów A S C II posz czególnych znaków: " A A ” < ,,BB” ” B a s lc "= ” B aslc" "A # "< "A $ ” “ A MIG A ” < "am lga”
2.5 E T Y K IE T Y I PROCEDURY E tykiety E tykietą można oznaczyć początek dowolnej linii programu. T w o rzymy Je na takich samych zasadach Jak zmienne, przy czym każda musi b yć zakortczona dw iA ropkiem . np.: E T Y K IE T A :, OKNO:
32
Do e tykie t możemy się o dw o ływ ać np. komenda Goto, wpisując jej nazwę już bez dw ukropka, np.: Goto TE ST przenosi nas do m iejsca program u oznaczonego etykieta TE S T.
Procedury PROCEDURĘ nazwa [lis ta param etrów ! END PROC [w yrażenie] Definiuje procedurę o nazwie nazwa. Nazwę procedury obowiązują takie zasady, jak nazwę zmiennej. W liniach określających koniec i po czątek procedury nie wolno umieszczać żadnych komend. Procedurę w yw ołujem y po prostu w ypisując jej nazwę. UWAGA: Kiedy używasz kilku procedur w jednej linii program u, pam iętaj o dodaniu spacji na końcu pierw szej z nich. Pozwoli to uniknąć pomylenia procedury z etykieta, np.: TEST :TE S T :T E S T
wykonuje procedurę TEST trz y razy
TE ST :TE ST :T E S T
określa etykietę TE ST I wykonuje proce durę TE ST dwa razy
Możesz także poprzedzać w yw ołania procedur instrukcją Proc, np.: Proc WYKONAJ A by uczynić program czytelniejszym możesz każda procedurę "zw inąć” w jedna linię używając rozkazu F o ld z menu, opisanego w raz z innymi o pokrewnym działaniu w poprzedniej części książki. Procedury moga w yw oływ ać same siebie (nie jest to jedynie skok do ich początku, lecz utworzenie nowej procedury zaw artej w poprzed niej), ale należy pam iętać, że program po zakończeniu wykonywania tak 33
w ywołane] procedury po w raca do m iejsca jej w yw ołania, a wykonując ja tw o rzy nowy zestaw zmiennych. O peracji takiej można dokonywać w ielo krotnie.
Zmienne globalne i zmienne lokalne Zmienne I ta b lice , k tó re definiujesz w procedurach (lokalne) sa ca łko w icie niezależne od użytych w program ie poza nimi (globalnych), mogą mieć nawet te same nazwy. Tak w iec zmienna czy tablica okreś lona w jakiejś procedurze nie jest rozpoznawana przez główny program lub inną procedure. Także jeżeli zdefiniujemy ją w głównym program ie, to nie możemy w yko rzysta ć jej w procedurze. Z ilu strują nam to nastę pujące p rzykła d y: P rz y k ła d 1: A=1000 TEST P rint A Procedure TEST Print A End P roc
(wynik: O
1000)
P rz y k ła d 2 : Dim A (10) For V —1 To 10: A (V )= V : Next WYDRUK End Procedure WYDRUK For P=1 To 10 P rint A (P ) Next End P roc (w ynik: A rra y n o t dimensioned) W drugim p rzykładzie wykonywanie procedury zostało przerwane komunikatem, że ta b lic a nie zo stała zadeklarowana, gdyż procedura WYDRUK nie bierze pod uwagę deklaracji ta b licy umieszczonej poza nią. Tak w iec należy pam iętać, żeby tra kto w a ć procedury jako całkow icie niezależne program y, z własnym i zmiennymi I tablicam i.
34
P aram etry procedur Param etry procedur to liczby, d a g i znaków lub najczęściej zmien ne globalne, któ re chcemy w ykorzystać w procedurze. Nie moga być to tablice. Oto p rzykła d procedury w ykorzystującej jeden param etr: Procedurę Z A P O Z N A N IE [A $ ] P rint "Cześć ";A $ End Proc Możemy ja w yko rzystać np. tak: Input ” Jak masz na im ię” ;l$ ZAPO ZNAN IE il$ ] Zauważ, że zmienna przeniesiona do procedury ma w niej nowa nazwę ustalana w definicji procedury. Możesz także używać wielu param etrów w jednej procedurze, od dzielając je w tedy przecinkam i, np.: Procedurę T E S T fJ e d e n ","D w a ” .100,0]
Udostępnianie zmiennych lokalnych 1 globalnych A by ko rzysta ć w komendy SHARED.
procedurze ze zmiennych globalnych używamy
SHARED lista zmiennych Um ożliwia ona korzystanie i zmianę w a rto ści zmiennych zdefinio wanych w głównym program ie w ew nątrz procedury. Dla zadem onstrowa nia przeróbm y jeden z wcześniejszych p rzykła d ó w :
35
A=1000 TEST Print A Procedurę TE ST Shared A Print A End Proc
(w ynik: 1000 1000)
Tablice wpisujesz w sposób następujący: Shared A (),A $ () Możesz także na początku program u lub w miejscu użyć komendy Global.
każdym innym jego
GLOBAL lista zmiennych Wpisane zmienne programu.
lub
tablice
beda
dostępne w
każdym miejscu
W yprowadzanie w a rto ś c i z procedury Służą do tego specjalne zmienne Param. ParamS, Param #. P rzyj mują one w a rtości zmiennej lokalnej odpowiedniego typu wymienionej po komendzie End P ro c w ostatniej wykonywanej procedurze, np.: KW ADRATJ3.0] Print Param # Procedurę K W A D R A T JA #] C # = A # *A # End P ro c [C # ]
(w ynik: 9)
Wychodzenie z procedury POP PROC Ta komenda powoduje natychm iastowe w yjście z procedury. N or malnie nastąpiłoby to po dojściu do End Proc. 36
R O Z D Z IA Ł BANKI
3
PAMIĘCI
AMOS B asic posiada 15 specjalnych banków pamięci przeznaczo nych do przechow yw ania danych związanych z operowaniem s p rite ’ami, b o b ’am i i muzyka. Każdy z nich ma swój numer od 1 do 15. Większość z nich może przechow yw ać dane każdego typu, ale niektóre z nich po siadają pewne ograniczenia, jak np. bank 1, w którym przechowywane są w szystkie definicje s p rite ’ów. Banki mogą być stałe lub czasowe. S tałe w ystarczy zdefiniow ać raz, nie kasują ich komendy Run i Ciear, i są autom atycznie zapisywane na dysk razem z programem . Czasowe natom iast zostają wyczyszczone p rzy każdym uruchomieniu program u lub użyciu komendy Clear.
T yp y banków Typ
Opis
Ograniczenia
S prites Icons Music Amal Samples Menu Chip w ork Chip data Fast w ork Fast data
Obrazy s p r ite ’ów i b o b 'ó w O brazy ikon Dane do tw orzenia muzyki Dane dla A M A L ’a Bank sam pie 7 Bank menu Tem porary workspace w Chipmem Permanent w orkspace w Chipmem Tem porary workspace w Chipmem Permanent workspace w Chipmem
Bank Bank Bank Bank Bank Bank Bank Bank Bank Bank
1 2 3 4 1 -15 1-15 1 -1 5 1 -1 5 1 -1 5 1 -15
Rodzaj
S ta ły S ta ły S ta ły S ta ły S tały S tały Czasowy S tały Czasowy S tały
LISTBA N K Powoduje w ypisanie w szystkich banków zarezerwowanych w mięci w form acie:
37
pa
Numer
T yp
Początek
Długość
Normalnie długość podawana jest w bajtach, aie w przypadku s p r ite 'ów i ikon Dodawana iest ilość zdefiniowanych elementów. Wynika to stad. że tego typu banki nie zajmuja jednego ciągłego bloku pamięci.
R ezerw ow anie i usuw anie banków
RESERVE AS typ .bank .długość Banki używane przez s p rite 'y i b o b ’y sa definiowane automatycznie przez A M O S ’a. Tej instrukcji możesz używać do definiow ania różnych innych banków, np.:
RESERVE AS WORK bank .długość Rezerwuje długość b ajtów przestrzeń robocza), w m iarę .
jako Tem porary workspace (czasowa m ożliw ości na rozszerzeniu pamięci
RESERVE AS CHIP WORK bank.długość Rezerwuje długość b a jtów jako Tem porary w orkspace na Chipmem. Banki od 1 do 5 sa rezerwowane przez system, wiec najlepiej nie dokonywać na nich żadnych operacji. Do definiow ania dalszych banków należy używać określeń podanych w tabeli typów banków.
ERASE bank Usuwa z pamięci bank o podanym numerze.
38
P aram etry położenia banków S T A R T (n r banku) LENG TH(nr banku) Gdy chcemy mieć bezpośredni dostęp do banków przy użyciu ta kich komend iak Poke, Doke czy Loke, moga sie okazać pomocne zmienne S ta rt(n r banku) i l ength(nr banku). Pierw sza przyim uje w artość równa adresow i początku banku, druga - jego długości w bajtach lub ewentualnie iioścl opisanych s p rite ’ów lub ikon. W przypadku skasowania banku zmienna S ta rt nie zmienia w a rto ści, a Length przyjm uje w a rtość zero.
Ładowanie i zapisyw anie banków na dysk Gdy program potrzebuje wielu różnych banków danych i nie mie szczą sie one w szystkie w pam ięci, możemy w odpowiednim momencie ładow ać potrzebne banki z dyskietki. LOAD "n a z w a "[,n ] Kiedy w ładowanym zbiorze znajduje sie w iecej niż jeden bank. to kasowane są w szystkie banki pamięci. Natom iast jeżeli ładujemy poje dynczy bank, to jedynie zastąpi on bank n lub, Jeżeli nie wpiszemy żad nego n, ten bank z któ re g o pochodzą dane. Odmiennie p rzedstaw ia sie sytuacja z blokam i s p rite ‘ów. Jeżeli param etr n nie występuję lub jest równy zeru, to sta re s p rlte 'y zostaną usunięte, każda inna w a rto ść spowoduje natom iast dołączenie nowego zbioru s p r ite ’ó w do już istniejącego. P rzykład: Load " AMOS_D A T A : S prltes/O ctopus.abk”
SAVE ”nazwa.abk"[,n] Jeżeli param etr n nie jest użyty, to zapisywane są w szystkie ban ki pam ięci, w przeciw nym wypadku tylko blok o wskazanym numerze. Kiedy używamy tej komendy należy sie upewnić, czy będziemy w stanie
39
przy ładowaniu rozpoznać, czy zbiór zaw iera wiecej niż jeden bank. gdyż ma to znaczenie przy form ułowaniu komendy Load. BS AVE ’'nazw a” , początek TO koniec Zapisuje na dysk obszar pamięci od adresu początek do adresu koniec, np.: Bsave ” T e s t” .S ta rt(7 ) To S ta rt(7 )+ L e n g th (7 ) Powyższa komenda różni sie od komendy SAVE tym, że nie w staw ia na początku bloku kró tkie j inform acji o banku, wiec taki biok nie może być załadowany p rzy użyciu Load. Komendą tą nie można zapisyw ać banków s p r ite ’ow, gdyż opis każdego z nich może sie znajdować w zupełnie innym miejscu pamięci.
BLOAD "nazw a", nr ta d u je do pamięci blok bajtów bez żadnej ingerencji w jego za w artość. Param etr n r może oznaczać albo adres pam ięci, albo numer banku, do którego blok ma być załadowany. Bank musi oczyw iście być zarezerw ow any i musi mieć odpowiednią wielkość, bo inaczej koniec bloku zostanie załadow any w dalszy, nie chroniony obszar pamięci.
40
R O Z D Z IA Ł OPERACJE
NA
4
ŁAŃ C UC H AC H
Poniżej podajemy funkcje służące do operacji na łańcuchach. Każ da z nich można operow ać na takich zasadach jak zmienna łańcuchowa. LEFT$(s$,n) działa w sposób tradycyjny, tzn. w ybiera ze zmiennej tekstowej pierw sze n znaków. R!GHT$(s$,n) analogicznie do powyższej, w ybiera ostatnie n znaków. MID$(s$,n,m) w ybiera znaki od n+1 do n+m. W przypadku pominięcia w artości m, działa jak Right$. Każda z 3 pow yżej opisanych funkcji może być także użyta nie tylko Jako zmienna, aie także do operacji na s$, np,: M 1D$(TEST$,2,5)=” AM1GA” zmienia znaki od trzeciego do siódmego zmiennej s$ a a "AMIGA ", IN S T R (d$,s$[,n]) w
poszukuje łańcucha s$ w d$ i przyjm uje w artość określająca p o ło żenie pierw szego znaku s$ odnalezionego w d$ lub 0. n może określać miejsce początku przeszukiwania. P rzykład: Do Input ” Ciag do przeszukania” ;PRZESZUKIW ANY$ Input "C iąg do znalezienia” ;SZU KA N Y$ X=lnstr(P R ZE S ZU K IW A N Y $.S ZU K A N Y $) If X=0 Then Print SZUKANYS ; ” nie w y s tą p ił" If X < > 0 Then Print SZU KA N Y$ ¡"znaleziony na pozycji ” ;X Loop 41
UPPER$(a$) funkcja przyjm uje w a rto ść a$. ale zamieniona na duże lite ry, np.: "AM O S,'= U p p e r$ (MAm O s")
LOWER$(a$) działa analogicznie do pow yższej, ale zamienia na małe litery.
FLlP$(a$) odw raca kolejność znaków w łańcuchu.
SPACE$(n) przyjm uje w a rto ść ciągu złożonego z n spacji.
STRING$(a$,n) przyjm uje w a rto ść ciągu złożonego z n pierw szych znaków ła ń cu ucha a$.
CHR$(n) tw o rzy łańcuch tekstow y złożony z Jednego znaku o kodzie n.
AS C (a$) tw o rzy zmienna c a łk o w ita o w a rto ści kodu A S C II pierwszego zna ku zmiennej a$.
42
LEN(a$) funkcja przyjm ująca w a rto ść ca łko w itą równą długości zmiennej a$.
V A L (a $ ) zamienia liczbą zapisaną jako zmienną tekstow ą na zmienną ca łko w itą lub rzeczyw istą, w zależności od przyporządkow ania, np„: X = V a l(” 1234” ) Prlnt X
(w ynik: 1234)
W przypadku niemożności takiego przetw orzenia, zmienna przyjm uje w a rtość zero.
STR$(n) p rzetw a rza zmienną c a łko w itą w tekstow ą. Um ożliwia to m.in. w y pisanie dowolnej liczby ca łko w ite j komendą Centra: Centre ’’Z o s ta ło "+ S tr$ (C hip F re e H ” b a jtó w wolnej pam ięci”
43
ROZDZIAŁ
5
TABLICE
DIM zm ienna(x>y .z ....) Definiuje ta b lice zmiennych. T a b lice możemy u tw o rzyć z dowolnego jednolitego typu zmiennych i może ona posiadać dowolną ilość wym ia rów . jednakże każdy w ym iar może za w ie ra ć maksymalnie 65.000 elemen tów . Jedną komendą Dim możemy zdefiniow ać kilka ta b lic, np.: Dim A $(10).B (10.10).C #(10.10.10) Element ta b lic y określam y jej nazwą I umieszczonym w nawiasach położeniem tego elementu. Pierw szy element każdej ta b licy określony jest numerem 0. P rzykład: Dim T A B L IC A ilG ) TA BLIC A (0 )= 1 0 :T A B LIC A (1 )= 15 P rln t T A B L IC A (1 );T A B L IC A (O )
(w ynik: 15 10)
SORT a (0 ) SORT a # (0 ) SORT a$(0) S ortuje za w a rto ść ta b licy układając je j elementy w porządku ros nącym.
M AT C H (a(0),n) M A T C H (a #(0 )ji# ) M AT CH (a$(0) jn$) Można używ ać ty lk o do jednowym iarowych I posortow anych tab lic. Wyszukuje w ta b lic y w a rto ść n I przyjm uje w a rto ść określającą je j po łożenie. Jeżeli nie znajdzie n. to przyjm uje w a rto ś ć ujemną określającą położenie najbardziej zbliżonej zmiennej. P rzykład:
4 4
Read N Dim D$(N) For 1=1 To N Read D$(l> Next I S o rt D$(0) Do Input A$ If A $ = ’’L ’’ FOr 1=1 To N : Print D $ (l) : Next I Else PO Z=M atch(D $(0). A$) If POZ>0 Then Print ’’Znaleziono ” ;D S(PO Z);' na pozycil ” ;POZ If POZ<0 And A bs(P O Z )< = N Then Print A $ ” nie znaleziono. Najbliższe ” ;D$(Abs(POZ>) If POZ<0 And A bs(P O Z )>N Then Print A $ ;’’ nie znaleziono. N ajbliższe ” ;D$(N) Endif Loop Data 10, "A dam s” , ’’Asim ov ” , ’’Shaw ” . ’’Kow alski ” , ’’Zelazny ’’ Data ’’N ixon” ,’’H arrison” .’’P ratch et” .’’Dickson’’
45
R O Z D Z IA Ł
&
G R A F IK A
AMOS posiada instrukcje nie tylko do rysowania linii I kó ł. ale także różnych w ielokątów . D ziałaja one równie dobrze w każdym tryb ie graficznym . G rafika może sięgać poza widoczna cześć ekranu I stopnio wo ujawniać sie p rzy jego przesuwaniu.
K o lo ry Jeśli chodzi o ilość ko lorów w yśw ietlanych równocześnie na ekra nie, AMOS w ykorzystuje w tym względzie maksymalnie m ożliwości A m igi (64). Do ich w ybierania służą następujące komendy: INK kol [.tło .o b ry s ] k o l określa podstaw ow y ko lo r, jaki bedzie używany do wykonyw a nia instrukcji graficznych. Jest to liczba z przedziału od 0 do 63 (górna granica zależy od trybu ekranu), tło w ybiera ko lo r ekranu (p a p e r). o b rys w ybiera kolor brzegów rysowanych figur (p atrz opcja Set Paint). Każdy z powyższych param etrów może zostać pom inięty, np.: •
X
Ink ,,5 ustala tylko kolor obrysu.
COLOR n,$rgb Pozwala zmienić każdy z 32 rejestrów kolorów Am igi, n określa numer koloru, k tó ry chcemy zmienić, a $rgb nasilenie każdej z 3 podstaw ow ych b a rw w wybranym kolorze. $ rg b składa sie z czterech pozycji. Pierwsza jest symbol 5, a trz y następne odpow iadają kolejno kolorom czerwone mu, zielonemu i niebieskiemu. W artości ich nasilenia podajemy cyfra heksadecymalną z przedziału 0 -F .
46
T ryb y graficzne HAM I E kstra H a lf-B rig h t używaja powyższych w a rtości nieco inaczej. Opisujemy to w dalszych rozdziałach.
COLOR(n) Jest to funkcja przyjm ującą w a rto ść oznaczoną powyżej jako $ rgb dla wybranego rejestru koloru. Normalnie jest ona na ekranie w ypisy wana w postaci dziesiętnej, w iec aby ujrzeć ją w postaci 3 cy fr he ksa decymalnych określających nateżenie poszczególnych barw , należy zasto sować funkcje HEX$.
PALETTE lista kolorów lis ta k o lo ró w oznacza po prostu definicje kolorów według sche matu z komendy COLOR ułożone w kolejności, poczynając od koloru 0. K olory pomiete oznaczamy w sta w ia jąc ’’p usty" przecinek (zachowują one nie zmienione w a rto ś c i), np.: Palette $200,.$020 definiuje tylko ko lo ry 0 i 2. Na początku program u zawsze ustawiany jest zawsze podstaw ow y zestaw kolorów .
Rysowanie linii GR LOCATE x,y Ustawianie kursora graficznego na pozycji x,y. W przypadku pominięcia param etrów pozycji w takich instrukcjach, jak P lo t, C lrcle przyjm owane są w ich m iejsce współrzędne kursora graficznego, np.: Gr Locate 10,10:P!ot , Gr Locate 100,100 .C ircle „100 O czyw iście kursor graficzny może znajdować sie także poza w id o czną częścią ekranu. 47
XGR YGR Zmienne graficznego.
przyjm ujące
w a rto ś c i
bieżących
współrzędnych kursora
PLOT x .y [,n ] Rysuje punkt o w spółrzędnych x .y i ko lo rze n. Wybrany kolor s ta je sie podstaw owym dla następnych komend graficznych.
POINT (x,y) Funkcja przyjm ująca w a rto ść numeru koloru w punkcie x.y.
DRAW [x1 .y 1 ] TO x2 ,y2 Rysuje odcinek od punktu o wspórzednych x 1 ,y l lub (w przypadku ich pom inięcia) od bieżącej pozycji kursora graficznego do punktu o współrzędnych x2.y2.
BOX x l . y l TO x2 .y2 Rysuje kw a d ra t. W spółrzędne określają lew y górny i praw y dolny róg.
POLYLINE x1.y1 TO x2 .y2 TO x3 .y3 ... Zw ielokrotniona Instrukcja Draw. Koniec odcinka jest początkiem następnego. Jedynym ograniczeniem jest maksymalna długość linii p ro g ramu (255 znaków).
48
CIRCLE x .y .r Rysuje okrąg o środku w punkcie x ,y i promieniu r. O czywiście x, y można pominąć.
ELLIPSE x ,y ,r i,r 2 Rysuje elipsą o środku w punkcie x,y, poziom ej półosi (prom ieniu) r1 i pionowej r2.
SET LINE typ Określa rodzaj linii używany przy wykonywaniu komend Draw. B o x i Polyline. typ jest liczbą szesnastobitową, któ re j kolejne b ity określają rysowane (1) lub nie rysowane (0) punkty odcinka. Z w ykłą linią określa liczba %1111111111111111, a np. przeryw aną %1111000011110000. S e t Line nie ma w pływ u na sposób wykonania komend C ircle i Ellipse.
Wypełnianie fig u r PAIN T x ,y .try b Wypełnia dow olny obszar ekranu jednym kolorem lub wzorem usta lonym komendą S e t Pattern. x .y są współrzędnym i dowolnego punktu w ew nątrz wypełnianego obszaru. W artość tryb równa 0 określa, że g ra nicą wypełnianego obszaru mają być punkty o kolorze określonym jako kolor obrysu, a 1, że ma być to dowolny ko lo r różny, od aktualnego koloru atramentu (ink). Por. Example6_01.
BAR x l,y 1 TO x2,y2 Działa analogicznie do Box. ale wypełnia narysowany prostokąt.
49
POLYGON Ix 1 .y 1 l TO x2.y2 TO x3 ,y3 ... D ziała analogicznie do Polyline, w ypełniając narysowany w ielokąt
SET PATTERN n Wybiera w zór, jaki ma być obszarów .
używany do
wypełniania wybranych
P attern=0 oznacza jednolite wypełnienie kolorem atram entu ( ink). P attern>0 w ybiera jeden z 34 zaprogram owanych w zorów . Sa one przecho wywane w zbiorze MOUSE.abk. Pierwsze trzy sa w ykorzystyw ane przez wskaźnik myszy. W łaściwe w zo ry rozpoczynają sie od numeru 4. P attern<0 w ybiera jako w zór w ypełnienia s p r ite ’a o numerze n * ( - 1 ) i dopa sowuje go odpowiednio do szerokości bedącej w ielokrotnością 16 punktów i w ysokości bedacej potęga dw ójki. Dwukolorowe obrazy s p r ite 'ó w sa w yśw ietlane w bieżących kolorach tła i atram entu. Jeżeli nato m iast s p rite jest w ielobarw ny, to ko lo ry Jego rysunku I aktualny kolor atram entu sa poddawane logicznej operacji AND. a tła logicznej op era cji OR. Tak w iec, jeżeli chcemy zachować oryginalny kolor sp rite 'a . mu simy ustalić kolor atram entu na 31, a tła na 0. Por. Examp!e6_02.
SET P A IN T n Włacza lub w yłączą try b w yróżniania obrysu figur rysowanych Ins trukcjam i Polygon I B ar, którego ko lo r określa trze ci param etr in strifccji Ink. Param etr n może przyjm ow ać w a rtości 0 lub 1.
50
T ry b y w yśw ietlania g ra fiki GR WRITING n Wybiera try b w yśw ietlania g ra fiki. Znaczące są 3 pierwsze b ity liczby n. T ry b JAM1 (b it0=0) G rafika rysowana normalnie, w przypadku tekstu graficznego nie uzupełnia tła . T ry b JAM2 (b it0=1) T ryb podstaw ow y. Nowa g ra fika jest nakładana na poprzednio na rysowaną.
T ry b XOR (b it 1=1) Poddaje nowe i stare rysunki operacji logicznej XOR, tzn. ponow na próba postaw ienia punktu w miejscu o kolorze atram entu powoduje, że przejmuje on barw ę tła . W tym tryb ie każdy uprzednio narysowany obiekt można wym azać rysując go pow tórnie w tym samym miejscu. Por. Example6_03. T ry b INVERSEVID (b it2 = 1 ) Powoduje odw rócenie obrazu, w szystko, co m iało być rysowane w koiorze atram entu jest w kolorze tła i odw rotnie. Używany często do inwersji tekstu graficznego. T ry b y można swobodnie mieszać, np.: Gr W riting 4+1:Rem JAM 2 I INVERSEVID Gr W riting 7 :Rem JAM2.XOR i INVERSEVID Jedyną komendą dotyczącą tekstu, na jaką mają w pływ powyższe opcje jest Text. Do innych służy komenda Writing. Patrz także: Autoback. 51
CLIP tx1.y1 TO x 2 .y2 ] Ogranicza cała g rafikę do prostokątnego obszaru określonego po danymi współrzędnym i. Można także podaw ać w spółrzędne spoza ekranu, a gdy będziemy rysow ać fig u ry siegaJace poza tak oganiczony obszar, bedzie widoczna ty lk o ich cześć. Pominiecie w spółrzędnych oznacza p o w ró t do normalnego obszaru g ra fiki obejmującego ca ły ekran. Por. Example6_04.
Zaawansowane techniki SET TEMPRAS (a dres.rozm iar] Ustala obszar pamięci przeznaczony cło operacji graficznych. UWAGA: N iew łaściw e użycie tej komendy może spow odow ać b a r dzo poważne kło p o ty , nie tylko na poziomie AMOS'a. Przy każdym w yw ołaniu komendy wypełniania, rezerwowany jest specjalny obszar pamięci na w zór wypełnienia. Po zakończeniu wykony wania komendy ten obszar Jest zwalniany. Obszar takiego bufora określam y liczba od 256 do 65535. Wartość adres może określać albo adres w Chipmem, albo numer banku pamięci. Wykorzystanie tej instrukcji może przyspieszyć wykonywanie p rog ramów o co najwyżej 5%. Aby p rz y w ró c ić obszarow i bufora oryginalna w ielkość w ysta rczy użyć S et Tempras bez param etrów . Por. Example6_05.
52
R O Z D Z IA Ł IN STR U KC JE
7
STE R U JĄ C E
7.1 INSTRUKCJE SKOKOW GOTO n Wykonuje skok do wybranego m iejsca program u, n może być nu merem linii łub e tykieta, moga one b yć zapisane także w postaci zmien nych.
GOSUB n Instrukcja skoku do podprogram u. Działa analogicznie Jak Goto, ale pozw ala na p o w ró t do m iejsca w yw ołania w chw ili napotkania ko mendy Return. Praktycznie bezużyteczna, mamy przecież procedury.
RETURN Pow raca do ostatniej użytej instrukcji Gosub.
POP Umożliwia w yjście z pominięciem Return z podprogram u w yw ołane go komenda Gosub. Jej funkcja polega na skasowaniu adresu pow rotne go. Sama nie powoduje w yjścia.
ON n PROC p ro c 1 [,p ro c 2 ,p ro c 3 ,...] Skacze do n -te j wymienione] procedury. Procedury wymienione w tej komendzie nie moga zaw ierać param etrów (ale potrzebne zmienne można łm udostępnić instrukcjam i G lobal lub Shared). Jest to równozna czne następującej liście komend: If n=1 Then p ro c l If n=2 Then p roc2 If n=K Then p rocK 53
ON n GOTO lin ia ł [,lin ta 2 .lin ia 3 ] Działa analogicznie do pow yższej, ale powoduje skok do wybranej linii programu.
7.2 INSTRUKCJE WARUNKOWE IF warunek THEN lista komend 1 [ELS E ] lista komend 2 Instrukcja wykonania warunkowego. Param etr warunek jest dowolna lista warunków, k tó re można łą czyć funkcjami And, Or, N o t i nawiasami. W jego miejsce można także w sta w ić liczbę, zmienna lub inne wyrażenie o w a rtości -1 (pra w d a ) lub 0 (fa łsz). Niedopuszczalne jest pominiecie Goto przy skoku warunkowym. Komenda ta jest ograniczona do jednej linii programu. Dużo więk sze m ożliwości ma poniższa komenda.
IF warunek lista komend [ELSE lista komend J ENDSF Strukturalna instrukcja warunkowa. D ziała analogicznie do poprze dniej instrukcji, z tym, że pozw ala na swobodny zapis listy komend w dowolnej ilości linii, nie posiada także części Then. Wewnątrz listy ko mend nie można stosow ać zw ykłej instrukcji warunkowej, a tylko struk turalną. Tak w iec instrukcje: If A -O Then G oto ETYK IETA1 Elsę Goto E T Y K IE T A 2 zapisujemy jako: If A = 0 :G o to E TY K IE T A 1 :Else Goto E T Y K IE T A 2:E ndif Należy pam iętać o zakończeniu każdej strukturalnej instrukcji w a runkowej komendą Endif.
54
7.3 INSTRUKCJE PĘTLI FOR n=plerw sza TO ostatnia [STEP k ro k ] lista komend NEXT n Typow a p ę tla FOR...NEXT, n jest zmienna, k tó ra będzie pow ięk szana o 1 lub o w a rtość k ro k przy każdym kolejnym wykonaniu lis ty komend, aż osiągnie w artość ostatnia. Dopuszczalny jest także kro k ujemny. Należy pam iętać o t,:n . że w ew nątrz p ętli możemy tra ktow a ć n jak każda inna zmienna z w yjątkiem zmieniania jej w a rtości. Każda pętlę FOR należy obow iązkow o zakończyć Instrukcja Atext. przy czym nie sa w niej dopuszczalne żadne skrócone lub skompenso wane form y.
WHILE warunek lista komend WEND Pętla. Części warunek i lista komend tw orzym y na takich samych zasadach jak w strukturalnej :nstrukcji warunkowej. Pętla jest p o w ta rzana do momentu, gdy warunek przestanie być spełniany. W przypadku nie spełniania podanego warunku przy wchodzeniu w pętlę, nie jest ona w ogóle wykonywana.
REPEAT lista komend UNTIL warunek Pętla REPEA T. Działa praw ie tak jak pęt'a WHILE, z tym. że warunek spraw dzany Jest na końcu. Tak w ięc lis ta komend wykonywana jest przynajmniej raz.
DO lista komend LOOP Pętla, z k tó re j jedynę m ożliw ością w yjścia |est użycie Instrukcji E x it lub E x it If. Konkurencyjna dla niestnJ
EX IT n Powoduje natychm iastow e "w yskoczenie” z każdej z czterech po wyższych pętli i rozpoczęcia wykonywania pierw szej instrukcji, która następuję po komendzie zam ykającej petle. n wskazuje z ilu petll należy w yskoczyć (w przypadku ich wzajemnego zaw ierania sie).
EXIT IF w a ru ne k/i D ziała jak E xit, ale wykonanie jest uzależnione od spełnienia w a runku określonego na zasadach identycznych, jak w instrukcjach w arun kowych.
7.4 INSTRUKCJE PRZERWANIA PROGRAMU EDIT Powoduje zatrzym anie program u i przejście do edytora. pomocna przy popraw ianiu I ulepszaniu części programu.
Bardzo
DIRECT Zatrzym uje program I przechodzi do tryb u bezpośredniego. Możesz w tedy od razu po w yjściu z program u np. p rzejrzeć w a rtości zmiennych.
END Kończy program I daje m ożliw ość przejścia do trybu bezpośred niego lub edytora.
7.5 INSTRUKCJE SKOKOW OKRESOWYCH EVERY okres GOSUB n Powoduje pow racanie do podprogram u n (n Jest określone takimi zasadami jak dla Gosub). co podany okres czasu (podany w 5 0 -ty c h częściach sekundy). System takich w yw ołań bedzle d zia ła ł skutecznie tylko w tedy, gdy tuż przed komenda Return wpiszemy dodatkow o E very on (musi być wykonane przy każdym w yjściu z podprogram u). O czyw iś cie czas wykonania podprogram u musi być krótszy, niż określa w artość okres. 56
dury
EVERY okres PROC proc Działa analogicznie do powyższej, ale powoduje wykonanie proce Także wymaga użycia E very on przed End P roc
EVERY ON/OFF Załacza system przerw ań używany przez komendy E ve ry Natych miast po każdym w yw ołaniu przez E very jest wykonywane E very Off
7.6 PROGRAMOWE W YŁĄCZANIE BREAK BREAK ON/OFF Włacza łub w yłączą m ożliwość przerw ania program u przez w c iś nięcie CTRL+C,
7.7 OBSŁUGA BŁEDOW ON ERROR GOTO n Spraw dza czy w program ie występują iakies błędy I kontroluje, czy pojaw iała sie w tra kcie jego wykonywania W przypadku wystąpienia błędu program skacze do n (form at lak dla Goto). Obsługa błędu musi być zakończona instrukcja Resume Komenda ta niestety nie zabezpiecza przed błędam i w ystępującym i miedzy uruchomieniem program u obsługi błędu, a Instrukcja Resume Obsługa błędów zostaje wstrzym ana w mo menele pojaw ienia sle samej komendy On E rro r
ON ERROR PROC proc D ziała analogicznie do powyższej, ale w yw ołuje procedure p ro c Przed komenda End P ro c musi w ystąpić Resume.
RESUME [N E X T ] / [lin ia 1/(LABEL [e ty k ie ta ]) Zakończenie procedury obsługi błędu (z w yjątkiem Resume Label) U żyta bez param etru w raca do komendy, w któ re ] w ystą p ił bład 1 p ró buje w ykonać Ja Jeszcze raz
57
Resume Next Wraca do pierw szej komendy, po któ re ] w ystą p ił błąd.
Resume E T Y K IE T A / Resume 100 Skacze do w ybranej linii program u określonej numerem lub etykie tą. Nie można w ten sposób w yw oływ ać procedury ani Jej kończyć.
Resume Label E T Y K IE T A Określa etykietą, do k tó re j należy wykonać skok po zakończeniu procedury obsługi błędu. Należy umieścić te komendą bezpośrednio po komendzie On E rro r...
Resume Label Powoduje skok do e tykie ty w ybranej powyższym rodzajem komendy Resume.
ERRN Funkcja p rzybie ra ją ca w a rtość numeru ostatniego błądu.
ERROR n Symuluje b łą d o podanym numerze. procedury obsługi błądów .
58
Pozwala
to
np. spraw dzać
R O Z D Z IA Ł TEKST
I
8
O KNA
8.1 TE K S T A try b u ty tekstu PEN ko io r Ustala kolor całego tekstu, la ki ma być umieszczony w bieżącym oknie. Ilość ko lo ró w do wyboru zależy od trybu.
PEN$(n) Funkcja tekstow a ustalaJaca ko lo r następującego po niej tekstu. np.: C $=Pen$(2)+,,B ia ły ” +Pen$(6)+,,Niebieski” P rint C$ Funkcja Pen$ ma form at C h r$ (2 7 )+ ”P"+C hr$(48+n).
PAPER kolor U staw ia ko lo r tła (0 -6 3 ).
PAPER$(n) Zmienna analogiczna do Pen$, ale ustaw ia ko lo r tła tekstu.
INVERSE ON/OFF Powoduje inwersje tekstu lub Ja wyłączą.
SHADE ON/OFF Komenda odw rotna do tradycyjnego Flash'a. Powoduje ściemnianie tekstu. On uruchamia opcje. O ff w yłączą.
59
UNDER ON/OFF Włącza lub w yłącza opcją podkreślania tekstu wyśw ietlanego na ekranie.
WR1TING w t[,w 2 ] Wybiera try b w yśw ietlania tekstu. Określa on jak nowo w p ro w a dzany tekst bedzie tra k to w a ł to . co jest na ekranie. w 1=0 REPLACE(zw ykły) W1 = 1 OR W 1 = 2 XOR w 1=3 IGNORE
Nowy tekst kasuje to, co jest pod nim Nakłada nowy tekst na sta ry (log. OR) Dokonuje logicznej operacji XOR. tzn. gasi punkty dw ukrotnie zapalone Ignoruje komendy tekstowe
Drugi param etr w ybiera, k tó ra cześć tekstu bedzie w yśw ietlona na ekranie: w 2=0 NORMAL (zw ykły) w2=1 PAPER w 2 = 2 PEN
Tekst w yprow adzany na ekran bez zmian Tylko tło tekstu jest wyświetlane Ignoruje ko lo r tła i w yśw ietla tekst na tle o kolorze 0
Nie należy m ylić tej komendy z G r Writing.
Ustawianie kursora LOCATE x,y U staw ia kursor w położeniu o współrzędnych tekstow ych (nie g ra ficznych) x.y. Punkt o w spółrzędnych 0.0 znajduje sie w lewym górnym rogu okna tekstow ego. Należy pam iętać o tym . że najpierw podajemy kolumnę, a potem w iersz okna. Także w te j komendzie jeden param etr można pominąć, ale nie można pominąć przecinka, np.: Locate KOLUMNA.
60
CMOVE x,y Przesuwa kursor o zadana liczbę pozycji w Także i tu jeden param etr może być pominięty.
dowolnym kierunku.
A T (x,y) Funkcja tekstow a działajaca jak Locate. Zw ykle umiesza sie ia w instrukcji P rin t lub jako cześć łańcucha (jest on w tedy wypisywany zawsze w tym samym punkcie ekranu). Form at te j funkcji to: C hr$(27)+ "X ”+C hr$(27)+ ” Y ”+Chr$(48+y).
HOME Równoznaczne z Locate 0,0. Ustawia kursor w lewym górnym rogu okna.
CDOWN Przenosi kursor o jedna linie w dół.
CDOWN$ Zmienna tekstow a działajaca identycznie jak komenda Cdown. Poz w ala na w ykorzystanie w ew nątrz zmiennej m ożliw ości przenoszenia k u rs o ^ np.: C$= ” \"+C dow n$ For A =0 T o 20 Print C$ ; Next A O dpowiada jej Chr$(31).
CUP Analogicznie do Cdown przesuwa kursor w gore.
61
CUP$ Zmienna tekstow a analogiczna do Cdown$, ale przesuw ająca kur sor w góre (C hr$(30)).
CLEFT Przesuwa kursor o jeden znak w lewo.
CLEFT$ Kursor lewo (równoznaczna C hr$(29)).
CRIGHT Przesuwa kursor o jeden znak w praw o.
CRIGHTS Kursor praw o
XCURS YCURS Zmienne ca łko w ite p rzybiera ją ce w artości w spółrzędnych położenia kursora.
SET CURS 11.12.13.14,15.16.17.18 Komenda zm ieniająca k s z ta łt kursora. Każdy z param etrów repre zentuje jedna pozioma linie, a kolejne b ity - kolejne punkty linii, np.: L1 =%11111111 L2=%11111110 L3=%11111100 L4=%11111000 L5=%11110000
L6=%11100000 L7=%11000000 L8=%10000000 Set Curs L1 .L2.L3.L4.L5.L6.L7.L8 62
CURS ON/OFF Czyn! kursor widocznym lub niewidocznym w bieżącym oknie.
MEMORIZE X /Y Powoduje zapamiętanie Jedne] ze współrzędnych kursora.
REMEMBER X /Y Ustawia kursor w położeniu określonym w spółrzędnym i zapamięta nymi przy użyciu poprzedniej komendy. Jeżeli nie została użyta, w m iej sce odpowiedniej w spółrzędnej w staw iana jest w a rto ść zero. Por. Example8_03.
CLINE In ] Wymazuje linie, w któ re j znajduje sie kursor. Jeżeli użyto n, w y mazywane je st n znaków, poczynając od pozycji kursora.
CjURS PEN n Wybiera ko lo r kursora. Podstawowym kolorem jest 3, jest to jedy ny kolor z fla s h ’em w momencie uruchamiania A M O S ’a.
Zam iana w spółrzędnych X T E K S T (x) Y T E K S T (y ) Zmienne przybie ra ją ce w a rto ść absolutnej współrzędnej graficznej x lub y zamienionej na w spółrzędną tekstow ą w danym oknie. W p rz y pacScu podania w spółrzędnej spoza okna przyjm ują w a rto ść ujemną. Por. Example8_01,
XG R APHIC(x) YG R APH IC (y) Dokładne odw rotności Xtakat I Ytakst. Por. Exmm0*$_O2.
63
Wyprowadzanie I w prow adzanie tekstu CENTRE a$ Wypisuje a$ pośrodku bieżącej iinii kursora. a$ może być dow ol nym ciągiem znaków (lub zmienną tekstow ą).
PRINT/? lista zmiennych Wypisuje dowolny tekst i w a rto ści dowolnych zmiennych w miejscu bieżącego położenia kursora. Zmienne i ciągi znaków można oddzielać średnikiem lub przecinkiem. W pierszym przypadku są one wypisywane jedna po drugiej bez żadnego odstępu, w drugim kursor jest przesuwany do następnej pozycji tabulatora. Jeżeli nie zakończymy linii jednym z powyższych dwóch znaków kursor zostanie autam oatycznie przeniesiony do następnej pozycji. P rzykład: Print 10,20*10,’’Dzień” ; ? ” d o b ry ”
PRINT USING form ai$ ¡lis ta zmiennych Um ożliwia kontrolow anie form atu wydruku. form atS może zaw ierać dowolny tekst i jest on normalnie w yprow adzany na ekran. Jeżeli nato m iast pojaw ią sie w nim znaki # , +, ., ; lub zostaną wykona ne odpowiednie operacje form atow ania zapisu. ~ # + ; ~
każdy z takich znaków w tekście jest kolejno zastępowany zna kiem z listy zmiennych. reprezentuje jedną c yfrę liczby, wszelkie nieużywane pozycje zos ta ją zastąpione spacjami. dodaje znak + do liczb dodatnich I - do ujemnych. dodaje znak ty lk o do liczb ujemnych, dodatnie poprzedza spacją. powoduje używanie kropki dziesiętnej I centruje ją na ekranie. centruje liczbę, ale nie powoduje użycia kropki dziesiętnej. powoduje w ydruk w form ie w ykładniczej. P rzykłady: Print Using "T o j e s t dem onstracja” ¡ ’’m ała” Print Using ” + # # “ ¡10 : Print Using Print Using ” To Jest liczba ' ' " i 12345.678 64
T AB$ Funkcja tekstow a przesuwająca kursor o 4 znaki w praw o (jedna pozycja ta b u la to ra ). W artość ta może być zmieniona komenda Set Tab. O dpowiada jej C hr$(9).
SET T A B n U stala w ielkość pozycji tabulatora.
REPEAT$(a$,n) Zmienna tekstow a równa n powtórzeniom a$. n może przyjm ow ać w a rtości z przedziału 1-20 7 . Format tej zmiennej: C hr$(27)+ "jRO "+a$+C pr$(27)+ "R ”+Chr$(48+n). Por. Exampłe8_04.
Zaawansowane komendy tekstow e ZONE$(a$,n) Czyni ze zmiennej a$ strefa rozpoznawana przez mysz. Możesz potem w ykryw ać znalezienie sia jej wskaźnika w ew nątrz stre fy funkcja Zone, n oznacza numer strefy. Maksymalna ilość s tre f określa komenda Reserve Zone. Form at tej zmiennej: C hr$(27)+ "ZO ”+a$+C hr$(27)+ "R ”+Chr$(48+n). Por. Example8_05.
BORDER$(a$,n) O tacza a$ ramka o numerze n (1 -1 6 ). Czasto używana w raz ze zmienna Zone$ do tw orzenia okienek opcji przeznaczonych do w ybierania myszą, np.: Print B order$(Z one$(” Tu kliknąć !",1 ),2 ) tw o rzy s tre fa o numerze 1 I ramce 2. Form at tej zmiennej: C hr$(27)+ ”EO ”+a$+C hr$(27)+ ”R ”+Chr$(48+n). 65
HSCROLL n Przesuwa tekst w oknie w p raw o lub w lew o o Jeden znak. n może przyjm ow ać w a rto ś c i: 1 2 3 4
- przesuniecie bieżącej linii w lewo - przesuniecie całego tekstu w oknie w lewo - przesuniecie linii w p ra w o - przesuniecie całości w praw o
VSCRO LLn Przesuwa tekst w bieżącym oknie w góre lub w dół. 1 2 3 4
- przesuniecie w d ó ł tekstu z - przesuniecie w góre tekstu - przesuniecie w góre tekstu - przesuniecie w dół tekstu z
W miejsca spacje.
pozostaw ione
linii kursora i z linii kursora z linii kursora linii kursora I
poniższych l poniższych i powyższych powyższych
po przesunięciu
tekstu
w staw iane
sa
8.2 OKNA
Definiowanie I zmiana parametrów okien WINDOtfOPEN n .x .y.w ,h [ra m ka [,a $ ,b $ ]] O tw iera okno i w yśw ie tla Je na ekranie, bedzle ono teraz używane do w szystkich operacji tekstow ych. n Jest numerem okna. Można o tw o rzyć dowolna Ilość okien. N or malnie oknem numer 0 Jest po prostu ekran m onitora, w iec raczej nie należy próbow ać go p o w tó rn ie o tw ie ra ć, ani zmieniać Jegoparam etrów komendami Wind Size lub Wind Move. x ,y sa graficznym i w spółrzędnym i lewego górnego rogu nowego okna. x je st autom atycznie zaokrąglane do najbliższej w ielokrotności 16. a w przypadku okna z ramka 'd o d a tko w o zwiększana o 8. Nie do tyczy to współrzędnej y. w.h sa rozm iaram i okna podawanymi w liczbie znaków (podzielnej przez 2). ramka określa Jeden z szesnastu rodzajów ramki w okół okna. 66
Ramka może za w ie ra ć 2 dowolne teksty. Jeden jest w yśw ietlany u ' góry okna, a drugi u dołu. Sa to tzw . iinle tytułow e. W oknach bez ramki nie można ich umieszczać tą komendą, a jedynie zw ykłym i in s tru kejami graficznym i. Okna mogą za w ie ra ć albo tekst, albo grafiką. Każde z nich może mleć w łasny zestaw znaków określany komendą Window Font. W danym momencie aktywne jest tylko jedno okno określane ostatnią komendą Windowopen iub Window. P rzykład: , For W=1 To 3 1 Windęwopen W,(W-1 >*96,50,10,10 Paper W+3:Pen W+6:Clw Print ” Okno nr ” ;W Next W
WINDOW FONT n Wybiera numer zestaw u znaków używanego w danym oknie (p atrz G et Font). Znaki muszą mieć rozm iary 8x8.
WIND S A V E Zabezpiecza przed usm iąciem zaw artość bieżącego okna, na w y padek. gdy zostanie ono p rz y k ry te przez inne, nowo otw ierane lub prze suwane. W przypadku usunięcia okna, któ re zasłoniło tak zabezpieczone okno, jego za w a rto ść zostaje natychm iast odtw orzona. Zabezpieczenie raz założone działa tak długo, ja k d;ugo okno jest o tw a rte . Jeżeli chcemy zabezpieczyć duże okno, np. zerow e, czyli podsta w ow y ekran program u, bo np. chcemy ko rzysta ć z mniejszych okien do komunikacji z użytkownikiem , to czasem lepiej zabezpieczyć tylko jego cząść. Jest to duża oszczędność pamięci (podstaw ow y ekran zajmuje 32k). Dokonujemy tego w sta w ia ją c I zabezpieczając pomocnicze, nie używane okno o odpow iednich rozm iarach w miejscu, w którym bedą o t wierane okna komunikacyjne.
67
BORDER n. tło .atrament Ustala nową ramką okna bieżącego, n określa numer Jej wzoru (1 -1 6 ), a tło i atram ent jej kolory. Podobnie jak np. w Ink lub Locate każdy z param etrów może być pom inięty, należy jednak pozostaw ić przecinki.
TITLE TOP a$ Zmienia górną linie tytułow ą okna (tzn. tą umieszczoną jako cześć ramki, p o r. Windowopen) na podaną. Można stosow ać tylko do okien z ramką. Np.: Windowopen 5,1,1,20,10 T itle Top "Okno nr 5 ” J Wait Key
T iT L E BOTTOM a$ Analogicznie do powyższej zmienia dolną linią tytułow ą.
WINDOW n Ustala okno n jako okno aktywne (bieżące). Jeżeli zostało ono zabezpieczone komendą Wind Save, jego zaw a rtość zostaje odtworzona. Por. Example8_06.
WINDOW Zmienna posiadająca w a rto ść numeru okna aktywnego (bieżącego).
WIND CLOSE Usuwa okno aktywne. Aby móc ponownie od tw o rzyć jego za w a r tość. należy je zabezpieczyć komendą Wind Save.
WIND MOVE x.y Przesuwa bieżące okno na m iejsce określone współrządnym l g ra fi cznymi x.y. x zostaje poddane operacji opisanej przy Windowopen.
68
WIND S IZE w.h Zmienia w ym iary okna. w i h podajemy na takich zasadach, jak przy Windowopen. Współrzędne kursora przyjm ują w a rtości 0.0. W przypadku zmniejszenia okna. tekst pozostający na zewnątrz niego nie zostaje usunięty z ekranu, natom iast w przypadku jego pow ię kszenia. nowa pow ierzchnia zostaje wypełniona spacjam i. Por. Exampie8_07.
CLW Kasuje za w a rto ść okna i wypełnia je kolorem tła .
Suwaki (listwy przewijania) AMOS posiada trz y instrukcje pozw alające na umieszczenie na ek ranie typowego suwaka. Tak narysowany suwak nie może być jednakże bezpośrednio przesuwany myszą i wymaga oddzielnej procedury obsługi. Por. Example8_08.
HSLIDER x1.y1 TO x2.y 2.całość .pozycja, rozm iar Rysuje poziom y suwak o położeniu określonym współrzędnym i le wego górnego rogu x1,y1 i praw ego górnego rogu x2.y2. Param etr ca ło ś ć określa liczbą jednostek, na jakie ma być podzielona szyna suwaka (w edytorze jest to liczba linii program u). Rozmiar pojedynczej jednostki określa w zó r: (x 2 -x D /c a ło ś ć pozycja określa położenie suwaka, a rozm iar jego długość w jed nostkach określonych w a rto ścią całość. Por. Exampie8_09.
VSLIDER x1,y1 TO x2.y2.całość.pozycja.rozm iar D ziała analogicznie do H słider, ale dotyczy suwaka pionowego Por. Example8_10.
69
SET SLIDER t1 .t2 .t3 .tw .s1 .s2 .s3 .6w U stala ko lo ry i w zory wypełnienia szyny suwaka I samego suwaka, zdefiniowanego któ rą ś z pow yższych komend. t1. 12, t3 I s1. s2, s3 określają k o lo ry atram entu, tła i obrysu szyny suwaka i suwaka, a tw I s i r numer w zoru wypełnienia zgodnie z zasadami opisanymi p rz y S e t p a t tern.
Fonty W AM O S'ie dostepne są 2 różne typ y zestaw ów znaków (fo n ts ): tekstow e l graficzne. Tekstow ych używ ają komendy typu P rin t I Window. Każde okno może mieć ich w łasny zestaw. G raficzne są o wiele b a r dziej elastyczne l oferują szerszy zakres atrybutów .
T e kst graficzny Amiga pozw ala na ustalenie dowolnego zestawu znaków. Jaki ma być używany. Oryginalna dyskietka Workbench’s zaw iera 8 takich zesta wów w różnych rozm iarach, a powszechnie dostępnych Jest wiele Innych. Jeśli posiadasz Workbench’s 1.3. to możesz tw o rzyć nawet własne zes taw y znaków p rzy użyciu program u Fed z dyskietki Extras. AMOS pozw ala na pełne w ykorzystanie tych m ożliw ości I w ypisy wanie tekstu w dowolnym punkcie ekranu, p rzy dowolnym Jego rozm iarze I atrybutach.
TE XT x.y.a$ Wypisuje aS w punkcie określonym dowolnymi współrzędnym i g ra fi cznymi x.y. Odnoszą sie one do linii podstaw ow ej danego zestawu zna ków (por. Text Base). Zw ykle ta linia przechodzi przez dolne części znaków, oczyw iście takich lak a. a nie Jak np. g. Podstawowym typem znaków Jest 8-p unkto w y go w każdej chw ili zm ienić komendą S et Font.
70
Topaz, ale można
K o lo r tekstu graficznego ustala komenda Ink. a nie Pen I Paper. Jest on traktow any ]ako instrukcja graficzna, w iec także nie interpretuje popraw nie zmiennych specjalnych typu Cup$. W przypadku polecenia wydruku tekstu nie mieszczącego sie w je dnej linii, nie bedzle on przeniesiony do następnej, ale po prostu ucięty w dowolnym miejscu znaku, np.: P rint S trin g $ (’’A '\1 0 0 );T e x t 0 .100,S trlngS ("A ".100)
GET FONTS Ląduj© z dysku i pamięci ROM listę w szystkich dostępnych zesta wów znaków. Konieczne jest użycie tej lub jednej z dwóch następnych komend przed Set Font. Z a w artość utworzonej w ten sposób listy moż na odczytać za pomocą funkcji FontS. UWAGA: A by odczytać z dowolnego dysku listę dostępnych fon tów . musi się na nim znajdować kopia standardowego katalogu Libs. a fonty muszą znajdować sie w katalogu Fonts.
GET DISC FONTS D ziała analogicznie do powyższe], ale znaków znajdujące sie w katalogu Fonts.
odnajduje
tylko
zestaw y
GET ROM FONTS D ziała jak powyższe, ale odszukuje tylko zestaw y z pamięci ROM. Obecnie są to tylko o ś m lo - I dziewieclopunktow y Topaz.
FONT$(n) Funkcja tekstow a zaw ierająca ciąg 37 znaków opisujących zestaw znaków o numerze n z listy utworzone] komendą Get Fonts. Jeżeli dany zestaw nie Istnieje, zmienna jest pusta w pozostałych przypadkach ma p o sta ć:
71
Nr znaku 1 -2 9 3 0 -3 3 3 4 -3 7
Opis nazwa zestawu wysokość zestawu pochodzenie zestawu
(D isc lub Rom)
Por. Example8_11.
SET FONT n Wybiera zestaw znaków używany przez komenda Text. Zadany ze staw zostaje samoczynnie załadowany z dysku. Nie zwalnia to jednak z użycia Get Fonts dla utw orzenia listy dostępnych zestawów. Por. Example8_ 12. SET TE XT a tryb u t Ustala a tryb u ty w ybranego zestawu znaków. Zapalenie kolejnych b itó w w a rtości a try b u t pow oduje: B it Efekt / ^ AB podkreślenie ' . -. * - pogrubienie * r Ęf l ( kursywa Można je oczyw iście dowolnie łączyć. TE X T STYLE Funkcja przyjm ującą w a rto ść określające a tryb u ty tekstu. Jej w a r tość jest budowana na zasadzie opisanej przy komendzie S et Text. TE X T LENGTH(a$) Zmienna tekstow a p rzyb ie ra ją ca w a rtość szerokości w punktach graficznych zmiennej a$ w bieżącym zestaw ie znaków. Zmienia sle ona w zależności od rozm iaru znaków. Jej w artość może być trudna do w y liczenia przy zastaw ach znaków proporcjonalnych, jak np. H elvetica. TE X T BASE Funkcja p rzyb ie ra ją ca w a rto ś ć pozycji linii podstaw ow ej bieżącego zestawu znaków. Jest to odległość od szczytu znaku do poziomu, któ ry bedzle określał miejsce w ydruku znaku na ekranie.
72
R O Z D Z IA Ł O PERACJE
9
AR YTM ETYC ZN E
Gdy rozpoczynasz korzystanie z operacji arytm etycznych AMOS B a s ic 's , upewni] się, że w sta cji znajduje się oryginalna dyskietka. A MOS będzie musiał sko rzysta ć z pliku M a th tra n s.lib ra ry z katalogu Libs.
Funkcje trygonom etryczne DEGREE inform uje, że w funkcjach trygonom etrycznych kąty będę podawane w stopniach, a nie. jak to jest zawsze na początku ustalone, w ra d ia nach.
RADIAN Przeciwnie do pow yższej dawanych kątów .
p rzyw ra ca radiany Jako jednostkę po
P I# S ta ła o w a rto ści równej liczbie *.
S IN (n [# ]> Funkcja sinus, Wynik te j funkcji i podobnych je st zawsze liczbą zmiennoprzecinkową.
C O S (n [# ]) Funkcja cosinus.
T A N (n [# J ) Funkcja tangens.
73
AC O S (n#) Funkcja arcus cosinus. Funkcja a rcsin nie w ystępuję, ale w zo ró w : a rc s in (x )= 9 0 -a rc c o s (x ) a rc s in (x )= 1 .5 7 0 8 -a rc c o s (x )
można
je
dla katów dla katów
A T A N (n # ) Funkcja arcus tangens.
H S IN (a [# ]) Funkcja sinus hiperboliczny.
H C Q S (a [# j) Funkcja cosinus h iperboliczny,
H T A N (a [# l) Funkcja tangens hiperboliczny.
Inne funkcje elementarne LO G (a [# ]> Funkcja lo g a rytm dziesiętny.
EXP(a#> Funkcja w ykładnicza (ex ).
LN(a#> Funkcja lo g a rytm n a tu ra ln y (Sosu).
74
zastąpić używając
' stopniach radianach
S Q R (a[# j) Funkcja p ie rw ia s te k kw adratow y.
A B S (a [# J ) Funkcja w a rto ść bezwzględna.
INT (a # ) Część ca łko w ita . Funkcja zaokrąglająca liczbę zmiennoprzecinkową do najbliższej liczby ca łko w ite j.
S G N (a [# ]) Funkcja signum. W artości, jakie przyjm uje to: - 1 . gdy a jest ujemne 0, gdy a jest równe 0 1, gdy a je st dodatnie
Generowanie liczb pseudolosowych RND(n) Przyjmuje w a rto ść ca łko w ite j liczby losowej z przedziału od 0 do n włącznie. Gdy n jest ujemne pow tarza ostatnią wyprowadzoną w a r tość.
RANDOMIZE n U staw ia w yjściow y param etr obliczeń dla generatora liczb pseudo losowych. Przy każdym włączeniu kom putera przyjm uje on tę samą w a r tość, tzn. losowany ciąg się pow tarza. N ajprostszym sposobem jego zróżnicow ania jest w pisanie: Randomize Tlm er Timer jest zmienną, któ ra przyjm uje w a rto ść określającą Ilość czasu, jaka upłynęła od momentu włączenia kom putera. Jest on mierzony w 5 0 -ty c h częściach sekundy. 75
Inne operacie arytm etyczne M A X (x [# /$ ].y [# /$ ]> Porównuje dw a w yrażenia I przyjm uje w a rtość większego. W p rzy padku zmiennych tekstow ych operuje kodami A S C II. O czyw iście nie w o l no mieszać typów zmiennych.
M IN (x l# /$ ].y [# /$ ]) Analogicznie do Max, porównuje dwa w yrażenia i przyjm uje w a r tość mniejszego.
S W A P (x [# /$ ].y [# /$ ]) Wymienia w a rto ś c i dwóch zmiennych tego samego typu.
FIX (n) Instrukcja określająca sposób w yśw ietlania zmiennoprzecinkowych. Istnieję cz te ry podstaw ow e 0 < n < 16 w tedy n określa Ilość c y fr po kropce n> 16 w yśw ietla tylko c y fry znaczące. n<0 w szystkie liczby zm iennoprzecinkowe w ykładniczej, n określa liczbę c y fr po n=16 w raca do podstaw ow ej p osta ci liczb.
lub drukowania liczb m ożliw ości: dziesiętnej, w yśw ie tla w postaci kropce dziesiętnej.
DEF FN nazwa [ (param etry )]= w y rażenie T w o rzy funkcję definiow ana przez użytkownika, nazwa określa jej nazwę, p a ra m e try są listę zmiennych dowolnego typu (odzielonych prze cinkam i). które będę używane przez funkcję, a wyrażenie Jest dowolną kom binację dowolnych standardow ych funkcji AM OS'a. ograniczoną je dynie długością linii program u. FN nazwa [(p a ra m e try )] O blicza w a rto ść funkcji zdefiniow anej przez D e l Fn dla podanych param etrów , np.: Def Fn A s ln (X )= 9 0 -A c o s (X > Degree P rlnt Fn A sln(0.5)
76
ROZDZIAŁ
10
EKRANY
Podstawowym ekranem program u Jest ekran 0 o rozdzielczości 320 na 256 I 16— tu dostępnych kolorach, co jecfriakże można w każdej chw ili zmienić lub otw o rzyć któ ry ś z siedmiu dalszych ekranów.
10.1 DEFINIOWANIE EKRANÓW
Otwieranie I zamykanie ekranów SCREEN OPEN n.w .h.lk.tryb O tw iera ekran I rezerwuje d la niego pamięć. Nowy ekran będzie obecnie używany do wykonywania w szystkich komend tekstow ych I g ra fi cznych. n lest numerem tw orzonego ekranu ( 0 - 7 ) .# Jeżeli dany ekran Już Istnieje, zostaje on ca łko w icie zastąpiony przez nowy. w jest szerokością ekranu w punktach. Nie jest ona ograniczona fizycznym i rozmiaram i ekranu w idocznego na m onitorze. Swobodnie moż na tw o rzyć ekrany, których Jedynie część może być widoczna. Operacje graficzne wykonywane są także w niewidocznej części ekranu. h jest w ysokością ekranu określoną na takich zasadach jak w. Jk je st liczbą ko lorów , jakie mają być używane przez nowy ekran. Waha się od 2 do 64. Możesz także użyć specjalnego trybu HAM (4096). try b określają nazwy Low res lub Hlres. Pierwsza określa rozdziel czość poziomą na 320. a druga na 640 punktów. Poniżej podajem y dostępne param etry ekranów w raz z Ilością pa m ięci. jaką zajmują przy standardow ych wym iarach.
77
K o lo ry: 2 4 8 16 32 64 4096
Rozdzielczość: Pamięć: 8k 320x256 16k 640x256 16k 320x256 32k 640x256 24k 320x256 48k 640x256 32k 320x256 64k 640x256 40k 320x256 48k 320x256 48k 320x256
Ekran podstaw ow y
E xtra H a lf-B rig h t (EHB) Hold and Modify (HAM)
Ekran podstaw ow y iest równoznaczny zdefiniowanemu komendą: Screen Open 0,320,256,16,Lowres
SCREEN CLOSE n Usuwa ekran o podanym numerze I zwalnia zajmowaną przez niego pamięć,
AUTO VIEW ON/OFF W przypadku użycia O ff wstrzym uje w yśw ietlenie ekranu o tw ie ra nego komendą Screen Open, a także w yśw ietlanie czegokolwiek na ek ranie do momentu użycia komendy View. W przeciwnym wypadku (przed użyciem A u to View lub po A u to View On) ekran jest w yśw ietlany na tychm iast po otw arciu.
DEFAULT Zamyka w szystkie ekrany i o tw ie ra ekran podstaw ow y 0.
VIEW W yświetla i uzupełnia w szystko, co zostało zmienione na ekranie po użyciu A u to v ie w Off.
78
Czyszczenie ekranu CLS [k o l[.x 1 ,y l TO x 2 .y 2 ]l Czyści c a ły bieżący ekran w raz z oknami. Kolorem wypełniającym Jest kolor o numerze 0 lub (w przypadku w ystąpienia) kol. W przypadku użycia dalszych param etrów in stru kcji zmienia ona swoje działanie I jedynie w ypełnia kolorem k o l p ro sto ką t określony współrzędnym i x1, y l, x2. y2.
10.2 SPECJALNE TR Y B Y EKRANU K olor każdego punktu na ekranie określany jest w a rtością prze chowywaną w Jednym z 32 re jestrów kolorów . Każdy re je str może za w ierać param etry jednego z 4096 dostępnych kolorów (w rejestrze za w a rta jest w artość z zakresu 0 -4 0 9 5 . którą zapisujemy heksadecymalnie jako $rgb, gdzie kolejne 3 pozycje określają stopień nasycenia jednym z kolorów podstaw ow ych w skali 0 -1 5 ). Gdy jednak chcemy skorzystać w jednym momencie z pełnej palety kolorów , a nie "ty lk o ” 3 2 -ó c h , możemy użyć jednego ze specjalnych tryb ó w ekranu (EHB lub HAM).
E xtra H a lf-B rig h t (EHB) Pozwala on ko rzysta ć z 64 kolorów . Pierwsze 32 (o numerach 0 do 31), to ko lo ry określone w artościam i rejestrów . N atom iast nastąpne 32 jest tworzone przez podzielenie w artości zaw artych w odpowiednich rejestrach kolorów przez 2. Daje to ko lo ry posiadające dokładnie p o ło wą nasycenia barw am i podstaw ow ym i kolorów zapisanych w rejestrach, dlatego powinny być w nich w tedy zaw arte jak najwiąksze w a rtości.
H o ld a n d M odify (HAM ) Wtym try b ie barw ą wybranego punktu określa w artość koloru punktu znajdującego slą na lewo od niego, m odyfikowana w a rto ścią ko loru. jaka jest jemu przyporządkow ana, inaczej m ów iąc, kolor punktu określam y także w a rto ścią od 0 do 63. ale w yw ołuje ona nastąpujące efekty:
79
0 -1 5 - Punkt ma kolor określony w a rto ścią zaw arta w odpowied nim rejestrze. 16-31 - Punkt ma k o lo r, k tó re g o w a rto ści nasycenia koloram i zie lonym I niebieskim określa punkt położony bezpośrednio na lewo od niego, natom iast w a rto ść nasycenia czerwienią Jest ustalana w zorem : nasycenie = n r k o i - 16. 3 2 -4 7 - Podobnie, punkt położony na lewo określa nasycenie ko loram i czerwonym I niebieskim , a nasycenie zielenią określa w z ó r: nasycenie = n r k o l - 32. 4 8 -6 3 - Punkt położony na lewo określa nasycenie zielenią I czerw ienia, a nasycenie kolorem niebieskim przylmuje w a r tość n r k o i - 48. -v
Tak w iec kolor każdego punktu zależy od w szystkich punktów po łożonych na lewo od niego. Przy odrobinie sp rytu pozw ala to uzyskać wspaniałe efekty w ykorzystujące pełna palete ba rw . por. Example10_01. Możesz również bez większego problem u tw o rzyć płynne przejścia z je dnej ba rw y w druga. Nie masz jednakże m ożliwości stw orzenia ostrego przejścia miedzy barw am i nie zaw artym i w rejestrach 0 -1 5 . Pierw szy punkt każdej poziom ej linii powinien mieć kolor o nume rze od 0 do 15. Jest to jej k o lo r początkow y. W try b ie HAM możesz w ykonyw ać bez przeszkód w szystkie ko mendy tekstow e i graficzne. Niepożądane efekty powodują jedynie ko mendy Screen O ffset (poziome przesuwanie powoduje zmianę punktów początkow ych) i Screen Copy (chyba, że lewy bok przenoszonego ob szaru ma ko lo ry z przedziału 0 -1 5 ).
10.3 ŁADOWANIE I ZA PIS Y W A N IE EKRANU NA DYSK LOAD IFF ” n a zw a "[.e kra n ] Ładuje z dysku obrazek zapisany w form acie i f f do bieżącego lub podanego ekranu. Jego sta ra z a w a rto ść zostaje wymazana. Jeżeli w yb rany ekran nie zo sta ł o tw a rty , zostanie on automatycznie utworzony.
S A V E IFF "n azw a"[.ścieśnianie] Zapisuje bieżący ekran na dysk w form acie iff. Param etr ścieś nianie (0 lub 1) określa, czy p lik ma zostać przed zapisem skompenso 80
wany. W przypadku wpisania w Jego miejsce zera, blok Jest zapisywany w oryginalnej postaci. W każdym innym przypadku je st dodatkow o kom pensowany. Przy takim zapisie ekran przy odtw arzaniu zachowuje w szystkie swoje oryginalne param etry. Można zapisyw ać ta komenda także ekrany tw o rzące dual p la y fie ld (p atrz dalej w tym rozdziale).
10.4 OPERACJE EKRANOWE Przesuwanie ekranu SCREEN D ISP LAY n [.x.y.w ,h ] Przenosi ekran w wybrane miejsce, n określa numer ekranu, a x, y to współrzędne sprzętow e nowego położenia ekranu. x może przyjm ow ać w a rtości z zakresu 0 -4 4 8 i jest ona zaokrą glana do najbliższej w ielokrotności 16. Widoczne sa tylko pozycje od 1 1 2-448. Wartości poniżej 112 raczej nie radzim y używać. y przyjm uje w a rtości od 0 -3 1 2 . Zakres w idoczny zależy od moni to ra . ale z reguły waha sie w granicach 30 -3 00 . UW AGA: W try b ie HAM ekran nie jest w yśw ietlany przy w artości y wynoszącej 256. w określa szerokość ekranu w punktach. Zaokraoiana do w ielok rotności 16. h określa wysokość ekranu. O czywiście każdy z param etrów x. y. w, h może być pominięty. Należy w tedy pozostaw ić "puste” przecinki. 0
Dokładne opanowanie tej instrukcji wymaga jednakże wielu samo dzielnych p rób różnego zmieniania param etrów . G rożą one w najgorszym wypadku dziwacznym wyglądem ekranu. Miedzy każdymi dwoma stykającym i sie ekranami w ystąpi "m artw a s tre fa ” szerokości jednego punktu. Jest ona generowana przez c o p p e r’a i niestety nie można Jej uniknąć. Jej przykład możesz zobaczyć miedzy oknem program u, a menu w edytorze.
81
SCREEN OFFSET n,x.y Przesuwa ekran ukazując te jego zaw artość, k tó ra nie m ieściła sie w widocznej części, n Jest numerem ekranu, a x. y określają odległość od lewego górnego rogu okna do punktu początkow ego części widocznej. Możesz także używać w a rto ści ujemnych, aby prze jrze ć dowolną cześć pamięci Tw ojej Am igi. Por. Exampie10_2.
Manipulowanie ekranami SCREEN CLONE n Powiela ekran bieżący do ekranu n. Używają one tej samej pa m ięci, w iec mają identyczną za w a rto ść, a ekran n nie może być a k ty wowany komendą Screen, może on b yć jednakże swobodnie przem iesz czany. Do kopii ekranu nie je st przenoszona inform acja o występowaniu flash.
DUAL PLAYFIELD ekrant ,ekran2 Powoduje utworzenie tzw . dual p fa y fie id (ekranu podwójnego) z dwóch ekranów o tym samym położeniu. Pozwala to na równoczesne w yśw ietlanie ich za w a rto ści, p rzy równoczesnym zachowaniu ich ca łko w ite j niezależności. Jest to funkcja idealna np. do tw orzenia efektu zm ieniającej sie paralaksy. N iestety, gdy używamy tej instrukcji, łączone ekrany muszą spełnić ograniczenia dotyczące zgodności rozdzielczości (okna z H ires nie moż na łączyć z oknem z L ow res) i ilości używanych ko loró w , tzn.: liczby kolorów e kra n l ekran2 2 2 4 2 4 4 4 8 8 8
Uwagi
T ylko Lo w res{320x256) T ylko Low res
82
Nie ma jednakże ograniczeń, co do rozm iarów okien. Mogą być one całkow icie rozbieżne. K olo ry używane przez takie ekrany brane są z palety e k ra n l. przy czym ko lo r 0 tra kto w a n y lest lako przezroczysty. Ekran 1
2
Numery kolorów 0 - 7 8 - 1 5
Kiedy używasz komend ustalających ko lo ry w drugim ekranie, są one automatycznie zamieniane na w łaściw e, tzn., że np. instrukcja Ink 2 wybierze kolor nr 9 z palety pierw szego ekranu. Ta zamiana nie d ziała w wypadku takich komend, jak Colour lub Palette. W momencie, gdy próbujem y zmieniać zakres kolo ró w w dual pla yfie ld . aktywny powinien być e k ra n l. Podobnie komenda Screen O ffset powinna odnosić sią do p ie rw szego ekranu. Por. Example 10_5.
DUAL PRIORITY e k ra n l. ekran2 Użycie tej komendy spowoduje, że drugi ekran bedzie w yśw ietlany ponad pierw szym , a nie odw rotnie, tak jak zaraz po użyciu Dual P la y fieid. Nie zmienia to jednakże reszty organizacji ekranów i ekran pierw szy jest w ciąż podstaw ow ym dla operacji np. z paletą kolorów .
SCREEN n Uaktywnia ekran n jako ekran bieżący.
SCREEN Funkcja przyjm ująca w a rto ść numeru bieżącego ekranu.
SCREEN TO FRONT [n ] Wyciąga ekran bieżący lub o podanym numerze na w ierzch pozos tałych.
83
Jeżeli użyto wcześniej komendy A u to v le w Off, dla pojaw ienia sie efektu te j komendy na ekranie konieczne Jest użycie komendy View.
SCREEN TO BACK [n j Chowa ekran za pozostałe.
SCREEN HIDE [n ] Usuwa z ekranu ekran bieżący tub o podanym numerze i przecho wuje jego zaw artość w pamięci.
SCREEN SHOW In ] Wyświetla ekran schowany komendą Screen Hide.
SCREEN HEIGHT Jn] Funkcja przyjm ująca w a rto ść w ysokości ekranu o podanym numerze lub bieżącego.
SCREEN WIDTH [n ] Funkcja przyjm ująca w a rto ść równą szerokości ekranu o podanym numerze.
SCREEN COLOUR Funkcja przyjm ująca w a rto ść równą ilości ko lo ró w dostępnych w bieżącym oknie.
S C IN (x.y) Funkcja przyjm ująca w a rto ść numeru ekranu, ja ki znajduje sie w punkcie o w spółrzędnych sprzętow ych x , y. Jeżeli ta ki ekran nie istnieje, funkcja przyjm uje w a rto ś ć ujemną. Często używana w raz z X Mouse i Y Mouse, aby sp raw dzić, czy wskaźnik myszy znalazł sie na obszarze danego ekranu.
84
Operowanie za w a rto ścią ekranu SCREEN COPY ©1 TO e2 SCREEN COPY e1.x1.y1.x2.y2 TO e 2 .x 3 ,y 3 [,try b l Przenosi cześć lub ca ło ść ekranu. e1 Jest numerem ekranu, z któ reg o obraz ma być kopiowany. Mo że to być numer ekranu standardowego albo określanego przez L o g ic lub Physic. e2 jest numerem ekranu, do którego w ybrany ob ra z ma być ko piowany. Jeżeli jest pom inięty, kopiowanie jest wykonywane do ekranu bieżącego. x1, y l . x2. y 2 określają obszar, k tó ry ma być kopiowany. x3, y3 określają miejsce przeznaczenia obrazu kopiowanego. Nie mają one żadnych ograniczeń, gdyż części obrazu wychodzące poza ob szar ekranu zostają w odpowiedni sposób przycięto. Opcjonalny try b określa jeden z 255 m ożliw ych tryb ó w . Jaki b iitte r użyć ma do kopiowania. O kreślają one, w jaki sposób obraz kopiowany I obraz znajdujący sle już w miejscu przeznaczenia mają być ze sobą połączone. Wybiera sle je zapalając (lub nie) kolejne b ity w a rto ści tryb. Ta komenda w ykorzystuje tylko 4 najstarsze b ity określające try b b iitte r'a (tzn. Jego obszary A I B ). podczas gdy pozostałe muszą być równe 0. Każdy z nich odpow iada określonej kom binacji odpow iadających sobie b itó w obrazu kopiowanego I obrazu w miejscu przeznaczenia: b it trybu 4 5
b it kopiowany b it m iejsca przeznaczenia 0 0 0 1
6
1
0
7
1
1
Jeżeli b it odpow iadający danej kom binacji punktów (b itó w ) jest zapalony, to zapalone bedą w szystkie punkty obrazu w yjściow ego utw o rzone z ta kie j kom binacji. Wiedząc to , możemy dow olnie w ybierać sposób kopiowania używa ny przy w yw ołaniu te j komendy ustaw iając po prostu w a rto ści odpow ie dnich b itó w . Załóżm y, że chcesz, aby obraz wynikowy p o ja w ia ł sle tylko w te dy, gdy oba odpow iadające sobie punkty są zapalone, try b przyjm uje
85
w tedy w a rto ść %10000000. Poniżej podajem y kilka podstaw ow ych w a r tości param etru try b i określany przez nie sposób łączenia obrazów . %11000000 % 00110000 %11100000 % 01100000
T ry b podstaw ow y. Zastępuje sta ry obraz no wym. Zastępuję s ta ry obraz negatywem nowego. N akłada jeden obraz na drugi (OR). N akłada oba obrazy na siebie w ygaszając punk ty dw ukrotnie zapalone (XOR).
DEF SCROLL n.x1,y1 TO x2 .y2 .d x,dy Definiuje n - tą z 16 m ożliw ych s tre f przesuwania zaw artości ekra nu. Każdej tych s tre f może odpow iadać jej w łaściw y sposób przesu wania zaw artości określany param etram i d x i dy. n jest numerem s tre fy z zakresu od 1 do 16. x1. y1, x2, y 2 ok-* reśiają położenie s tre fy I jej rozm iar. d x l dy określają o iłe punktów w praw o i w dó ł ma sie przesu nąć obraz w danej stre fie . O czyw iście mogą przyjm ow ać w artości ujem ne oznaczające ruch w przeciw nym kierunku.
SCROLL n Wykonuje przesuniecie za w a rto ści n - te j stre fy przesuwania według param etrów podanych w instrukcji D e f S cro ll, np.: Load Iff ” A M O S _D A T A :IF F /F rog_Leap.lF F '\2 Def S cro ll 1,0,0 T o 320,256,1,0 Do S c ro ll 1 Loop Por. oB.
Example 10^07
\
Example
Przełączanie ekranów A b y w y tw o rz y ć złudzenie płynnego ruchu, trzeba w yśw ietlać coraz to nowe obrazy na ekranie w czasie krótszym niż piętnasta cześć se 86
kundy. Jest to czasem trudne do uzyskania nawet na Amidze. Jednak AMOS B asic pozw ala osiągać takie efekty. Rozwiązanie problemu szybkości ukazywania sie obrazu na ekranie uzyskano stw a rzają c przechowywany w pamięci ’’ekran logiczny", któ ry może w każdej chw ili "w sko czyć" na mieisce fizycznego. O czywiście jest to dokonywane przy pomocy b lite r'a . Przeniesienia w szystkich operacji z ekranu fizycznego na logiczny dokonuje komenda Double B uffer (patrz B o b ’y). Od tego momentu wynik żadnej operacji nie Jest w* św ietlany na widocznym ekranie, ale p rzy czynia sie on do zapełnienia ekranu logicznego. Potem w ystarczy tylko je przełączyć komendą Screen Sw ap i natychm iast ekran logiczny zaj muje miejsce fizycznego I odw rotnie.
SCREEN SWAP In ] Wymienia za w artości ekranu fizycznego i logicznego. Pierwszy jest tym. k tó ry widzim y, a drugi Jego m akietą w pam ięci. Przed użyciem za równo tej komendy. Jak i przygotow ującej do niej Double B uffer musisz użyć komend Bob Update O ff I Autoback Off. a w czasie używania sys temu ekranów logicznego i fizycznego nie powinieneś w ogóle używać bob'ów . Powyższe ograniczenia wynikają głównie z tego. że b o b ’y rów nież używają systemu, któ ry w program ie w łącza komenda Double Buffer. Por. Example 10_09 \ Example10_10.
P H Y S lC ln ] Funkcja p rzybierająca w a rto ść numeru bieżącego ekranu fizycz nego. Umożliwia ona bezpośredni dostęp do obrazu wyświetlanego sys temem Double Buffer. W artość tej funkcji może być w ykorzystana np. w komendach Zoom, A pp e a r lub Screen Copy. n jest numerem ekranu A M O S ’a. Jeśli je st pom inięty, zostanie w jego miejsce w staw iona w a rtość numeru ekranu bieżącego.
L O G iC ln] Funkcja przybie ra ją ca w a rto ść numeru bieżącego ekranu logicz nego. W połączeniu z Zoom, A pp ea r lub Screen Copy pozwala zmieniać obraz znajdujący sie poza widocznym ekranem. 87
Synchronizacja ekranu Jak wiadomo, obraz z pamięci ekranu je st przenoszony na ekran co 1 /5 0 -tą część sekundy. Po tej operacji strum ień elektronów zostaje na krótka chw ilę wygaszony. Okres, k tó ry w tedy następuje, nazywamy okresem wygaszania ekranu. W tym czasie muszą być ukończone w szys tkie operacje takie, jak np. Anim lub Screen Swap. Jako że w A MOS B a sic'u 1 /5 0 -ta jest dość długim okresem, może się okazać, że w ystąpią zauważalne problem y z koordynacją program u z systemem wypełniania ekranu. Może je rozw iązać komenda Wait Vbi.
W AIT VBL Powoduje, że program czeka z wykonaniem następnych Instrukcji do następnego okresu w ygaszania ekranu. Często używana w raz z ko mendami P ut Bob lub Screen Swap.
10.5 KOLORY EKRANU DEFAULT PALETTE k1.k2.k3,... (do 32 ko lo ró w ) Ustala jednolitą paletę dla w szystkich ekranów otw ieranych przez Screen Open. Jest ona ustalana na takiej samej zasadzie, jak w instru kcji Palette.
GET PALETTE n [,w y b ó r] Przypisuje ekranow i bieżącemu paletę ko lo ró w ekranu n. Jest to szczególnie pomocne p rzy np. używaniu instrukcji Screen Copy, k tó ra nie kopiuje palety kolorów . w yb ó r pozw ala na w ybranie ty lk o niektórych kolorów . Szczegóły p a trz G et S p rite Palette.
10.6 EFEKTY SPECJALNE APPEAR ź ró d ło TO przeznaczenie .efekt [.punkty] Pozwala na stw orzenie łagodnego przejścia między ekranami ź ró d ło i przeznaczenie. Numery ekranów można także za stąp ić funkcjami Lo g ic I Physic. 88
e fe kt określa sposób przekształcenia. Jego w artość może sie w a hać od 1 do ilości punktów na ekranie. punkty określała liczbę punktów, któ rych ma d otyczyć operacja. Normalnie ta w a rto ść obejmuje ca ły obszar ekranu, ale można to o g ra niczyć jedynie do Jego części. Ekran jest zawsze wypełniany poczynając od g ó ry do dołu . Wynik tej instrukcji zależy oczyw iście od użytego trybu ekranu. Por. Exam plel0_11.
FADE c z a s j.lis ta k o lo ró w j/[T O n [.w y b ó r] 1 Zmienia płynnie jedna palete koiorów w inna. Gdy podamy jedynie param etr czas. w szystkie ko lo ry ekranu wygaszane sa do koloru zero wego. natom iast gdy podamy listę koiorów (jak w P a le tte ) lub numer ekranu, z którego paleta ma b yć przeniesiona, ko lo ry zostana płynnie przekształcone. Dokonuje sle tego przez kolejne zmiany zaw artości re le s tró w kolorów o 1. czas określa (w 5 0 -ty c h częściach sekundy) Jaki ma być okres miedzy kolejnymi krokam i tej op eracji, a w yb ór jest 1 6 -b ito w a liczba, któ re j kolejne b ity odpow iadają numerom ko lorów , któ re maja być zmie nione. Jeżeli dany b it ma w artość jeden, to ko lo r o tym samym numerze zostaje poddany powyższej operacji. Można także w yb ra ć palete z banku s p rite 'ó w . w ysta rczy podać ujemna w a rto ść n. Operacja Fade jest dokonywana przy użyciu systemu przerwań, w iec jeżeli nie chcemy, aby przed jej ukończeniem b yły wykonywane nastepne instrukcje, musimy użyć instrukcji Walt o param etrze równym w a rtości c z a s * 15. Por. Example10_ 12.
FLASH n ,"(k o lo r ,czas)(kolor .czas)...'(m ax. 16) Pozwala przyporządkow ać ko lo ro w i o numerze n własność cią g łe go migania (flash). K olor n p rzybiera po kolei każda z ba rw określona w a rto ścią k o lo r (fo rm a t $rgb - p a tr z Colour) I utrzym uje ją przez okres. Jaki określa czas w 5 0 -ty c h częściach sekundy, np.: Flash 1 ,"(007,10)(000,10)
89
powoduje, że k o lo r numer 1 co 1 0 /5 0 -ty c h sekundy bodzie zm ieniał sw oja barw o miedzy niebieskim i czarnym. Normalnie jedynym kolorem m igającym je st podstaw ow y ko lo r kur so ra. tzn. 3. Funkcjo Flash w ytacza użycie Flash Otf. Czasem w a rto Jej użyć przed ładowaniem obrazków z dysku.
SHIFT UP czas .pierw szy .ostatni .tryb Powoduje ro ta cjo ko lo ró w palety. K o lo r pie rw szy staje sio drugim , drugi trzecim itd . aż do ostatniego, czas określa odstęp między ko le j nymi krokam i ro ta c ji (w 1/50s). try b natom iast, czy ko lo r pierw szy ma być zastopowany ostatnim (1 ). co um ożliwia c ią g ło ro ta cję , czy ma być pow ielany (0). np.: Shift up 10.1.15.1 S hift up 50,1.15.0 Wykonywaniem tej o p e ra cji zajm uje sio system przerw ać, w ięc nie ma ona w pływ u na dalsze w ykonywanie programu.
'
SHIFT DOWN cza s.p ie rw szy.o statn l.tryb D ziała jak SHIFT UP, ale ro ta cja odbyw a się w przeciwnym kie
runku.
SHIFT OFF Wstrzymuje ro ta cjo ko lo ró w w yw oływ aną dwom a powyższym i ko mendami.
SET RAINBOW n.koior.długość.rS .g$.b$ Definiuje e fekt tęczy, k tó ry może b yć potem w yw ołany komendą Ratnbow. al określa numer tęczy z zakresu 0 - 3 . k o lo r je st numerem ko lo ru, k tó ry ma b yć zmieniany przez tę Inst rukcję (0 -1 5 ). Może b yć mu przypisana odmienna w a rto ść dla każdej li n ii ekranu. 90
długość określa rozm iar ta b licy do przechow yw ania kolorów (1 6 54400). Każdemu ko lo ro w i na ekranie odpow iada 1 pozycja. Jeśli dłu gość jest mniejsza niż fizyczna wysokość tęczy, ko lo ry zostaną p ow tó rzone. r$. g$. b$ określają zmienność trzech podstaw ow ych kolorów składowych poszczególnych linii tęczy. O kreślają one zaw artość ta b licy kolorów , a każda jej pozycja odpow iada ko lo ro w i jednej linii ekranu. Na początku w szystkie jej pozycje za w ie rają w a rto ść zero I zmienia ją do p ie ro nasze określenie koloru. O czyw iście każda z w a rtości r$. g$, b$ może zostać pom inięta, jednakże należy pozostaw ić przecinki I cudzysłow y. Param etry rS, g$, b$ mają następujący fo rm a t: (n,k rok. liczba) n określa liczbę lin ii, jaka ma być przypisana odpowiedniej w a r tości koloru. Zwiększanie tej w a rto ści powoduje w zro st wysokości poje dynczej linii tęczy. kro k określa w a rto ść. Jaka ma być kolejno dodawana do odpo wiedniego składnika. Jest to w a rto ść używana do tw orzenia kolorów następujących po sobie linii. Może to być liczba dodatnia lub ujemna. Gdy w a rtość składnika koloru przekroczy 15, jest on natychm iast zmniejszany do odpowiednie] w a rto ści przez odjecie w ielokrotności tej liczby. ficzba określa, ile razy pow yższe operacje mają być powtórzone. P rzykłady: Set Ralnbow 0.1.64.” ( 8 .2 . 8 r . ” " ." " 1®
0,56,1,255
Screen Open 0,320.256,2.Low res Set Ralnbow 0,1.128.'’ (8 .1.8),,.” (8 .1 .8 )",” " Ralnbow 0,1,30,128 Colour 1,0:Curs O ff:C ls 1:Flash O ff Locate 0,2:C entre "AM OS B asic":W alt Key Tw orzone w ten sposób tecze nie są zb yt pamleciochłonne i nie powodują żadnych ograniczeń jeśil chodzi o np. ekrany czy animacje. Jednakże raczej nie należy Ich stosow ać w połączeniu z instrukcjam i Flash lub S h ift 91
W przypadku pokryw ania się tęczy, będzie widoczna ta o najniż szym numerze.
RAINBOW n.poczatek.y.h Wyświetla tęczę o numerze n na ekranie. Jeśli zostało użyte A u to v ie w Off, tęcza ukaże sie dopiero po View. p o czą te k określa numer pierw szego koioru w ta b licy stw orzonej przez S e t rainbow względem koloru wybranego w tej Instrukcji. Zm ie nianie te j w a rtości powoduje wrażenie przesuwania tęczy po ekranie. y je st pionowa w spółrzędna sprzętow a tęczy. Minimalna jej w a r tością jest 40. Przy użyciu mniejszych w a rto ści, tęcza będzie w yśw ie t lana od linii 40 w dół. h określa w ysokość tęczy. Tęcze moga być swobodnie używane w połączeniu ze wszystkim i innymi efektami generowanymi przez A M O S ’a, łącznie z b o b ’am i i s p ri te ’ami. Jedynym ograniczeniem sa instrukcje Flash i Shift. Użycie tęczy korzystającej ze zmienianych przez nie kolorów może prow adzić do róż nych nieprzewidzianych efektów .
RAIN (n,m )=k Zmienia ko lo r w ybranej linii tęczy, n jest numerem tęczy, a m jej iin ii, n p .: Curs O ff:Centre "AM OSS B A S IC ” Set Rainbow 1,1,4097,” ” ,” ” ,” ” For Y = 0 To 4095 R a ln (1 ,Y )= Y Next Y For C=0 To 4 0 9 5 -2 5 5 Rainbow 1,C,40,255 Next C Wait Key
ZOOM e1 ,X1 ,y1 ,x2,y2 TO e 2 ,x3,y3,x4 ,y4 Powiększa lub zmniejsza w ybrany prostokąt.
92
Część instrukcji przed To określa numer ekranu i p rostokąt, k tó ry ma zostać przeniesiony. Dalsza część w analogiczny sposób wyznacza miejsce przeznaczenia. Por. Examp/e10_14.
10.7 ZM IENIANIE CO PPERUST’A Copper jest specjalizowanym układem kontroli ekranu posiadającym własną pamięć i zb ió r komend. Normalnie sterowaniem C opp er'a zajmuje się AMOS, aie bezpośredni do niego dostęp znacząco zwiększa nasze m ożliwości. AMOS B a sic um ożliwia proste stw orzenie własnego C op pe rL ist’a, jednakże przed użyciem którejkolw iek instrukcji z poniższych należy obo wiązkowo zapoznać się z jakimś szerszym opracowaniem na Jego temat.
COPPER OFF Wyłącza bieżący C opperList i wstrzym uje w yśw ietlanie czegokol wiek na ekranie. Możesz w tedy tw o rzyć własny obraz używając Cop Move i Cop Walt. Na C o p p e rL ist’a utworzonego przez użytkownika dostępne jest do 12k pam ięci, co daje obszar na ok. 6000 instrukcji. O czywiście odpo wiednie komendy systemowe mogą ten obszer powiększyć. Poniższe instrukcje pozw alają na tw orzenie logicznego CopperLis t ’a . k tó ry nie je st w yśw ietlany na ekranie. Gdy jest on gotow y należy użyć Cop Swap, by wym ienić go z fizycznym , tj. widocznym na ekranie. Należy także pam iętać o tym . aby w pisyw ać C opperLlst'a w ś c i śle określonym porządku od lewego górnego do praw ego dolnego rogu ekranu. Por. Example10_15.
COPPER ON P rzyw raca standardow ego C o p p e rL ist’a AMOS'a.
93
COP MOVE a d r.w a rto ść Generuje instrukcje logicznego CopperL is t ’a Move. a d r je st adresem 1 6 -b lto w e g o rejestru. Musi on znajdować sie w stre fie danych C opper'a ($7F -$1B E ). w a rto ś ć je s t liczba, któ ra ma być załadowana do tego rejestru.
COP MOVEL a d r.w a rto ść Działa identycznie jak Cop Move, ale odnosi sie do rejestru 3 2 bitow ego.
COP WAIT x,y[,x1,y1J Wpisuje do C o p p e rL ist’a instrukcje Wait. Copper czeka na dojście do współrzędnych x , y I p rz y w ra c a kontrole głównemu procesorow i. Z a uważ. że linia 255 jest autom atycznie kontrolow ana przez AM O S’a. x1 I y1 sa w artościam i b ito w ym i, pozw alającym i na oczekiwanie na ustawienie pewnej kom binacji b itó w we w spółrzędnych ekranowych. Ich podstaw ow a w a rto ś c ią Jest $1FF.
COP RESET Ustaw ia adres używany przez następna instrukcje Copper'a na po czątek C o p p e rL ist’a .
COP LOGIC Fmkcja przyjmującą wartość absolutnego adresu logicznego Cop p e rL is t’a. Umożliwia ona wprowadzanie jego zawartości metodami as semblera.