Kurs Atari Basica/2/¢¢ Poprzednio zdobyte wiadomo③ci powinne¢wystarczy⇨ do napisania prostych "pro-¢gramik".¢¢ Wy③wietlenie napisu w trybie tekstowym¢0 z jednoczesnym czyszczeniem ekranu:¢¢10 GRAPHICS 0¢20 ? "}"¢30 POS.1,10:? "Piesek wali suczk❎ w..."¢¢ Analogicznie -wy③wietlenie napisu, ale¢w trybie 1 lub 2¢¢10 GRAPHICS 1(lub 2)¢20 ? #6; "Suczka dostaa orgazmu"¢¢¢ No dobra. Jeəeli kto③ nie kapejszyn¢powyəszych programikw, to niech wy⇧-¢czy komput klawiszem RESET ...¢¢ Widz❎, əe tego nie zrobie③, ③wiadczy¢to wi❎c o tym, əe powyəsze programiki¢s⇧ przez Ciebie rozumiane... Moəemy¢wi❎c przej③⇨ do wa③ciwej lekcji ...¢¢ Na pocz⇧tku wspomn❎ o bardzo cz❎sto¢wykorzystywanej instrukcji jak⇧ jest¢GOTO numer linii. Program po napotkaniu¢jej wykonuje skos do wskazanej linii,¢np. GOTO 30 oznacza skok do linii 30.¢¢ Cz❎sto, gdy na ekranie w trybie 0¢wy③wietli si❎ wcze③niej wprowadzony¢przez nas tekst instrukcj⇧ PRINT(skrt¢to ?) zaraz po wy③wietleniu wraca do¢stanu gotowo③ci Basica -napisu READY.¢A gdyby tak poczeka⇨, a dopiero p♪niej¢wyskoczyo to READY... Jak to zrobi⇨?¢Do tego celu posuəymy si❎ najprostsz⇧¢tzw.p❎tl⇧ op♪niaj⇧c⇧. Jak z nazwy wy-¢nika ta p❎tla suəy do robienia pauzy.¢Wzr takiej pauzy to:¢¢ FOR T=x TO y:NEXT T¢¢gdzie:¢za x wstawiamy dowoln⇧ liczb❎(na pocz⇧-¢tek niech to b❎dzie 1 lub 0), a za y¢dowoln⇧ inn⇧, wi❎ksz⇧ od zera. O co tu¢chodzi? Komputer napotykaj⇧c tak⇧ in-¢strukcj❎ liczy od warto③ci x do y.¢W zaleəno③ci jak duga ma by⇨ pauza¢wpisuje si❎ wi❎ksz⇧ warto③⇨. Np. p❎tla:¢FOR T=1 TO 1000:NEXT T oznacza, əe kom-¢puter liczy od 1 do 1000 i po skocze-¢niu liczenia nast❎puje wykonanie nast❎-¢pnej linii. Jeəeli takowej nie ma, to¢oczywi③cie nast❎puje w⇧czenie trybu¢0(jeəeli aktualnie byli③my w innym)¢i wy③wietleniu napisu READY...¢Pobawcie si❎ !¢¢ Czasami przydaje si❎ nast❎puj⇧ca rzecz¢wyskakuje napis wy③wietlony poprzez¢instrukcj❎ PRINT, po ktrej nast❎puje¢p❎tla op♪niaj⇧ca, a po niej czyszcze-¢nie ekranu i kolejny napis. I wa③nie¢podczas trwania p❎tli op♪niaj⇧cej¢do③⇨ "nieadnie" wygl⇧da widniej⇧cy¢kursor. Aby kursor nie by widoczny,¢naleəy tak zmieni⇨ zawarto③⇨ komrki¢752, aəeby bya wi❎ksza od zera. Jeəeli¢zawiera ona warto③⇨ 0 wwczas kursor¢jest widoczna. Kaəda inna warto③⇨ powo-¢duje jego ukrycie. Wi❎c, aəeby w naszym¢programie nie byo wida⇨ kursora naleəy¢wprowadzi⇨ zaraz w pierwszej linii pro-¢gramu(ale za ew.instrukcj⇧ GRAPHICS)¢instrukcj❎: POKE 752,1 . . .¢¢¢¢ Czasami przydaje si❎ takowa rzecz:¢po wy③wietleniu napisu w trybie 0 in-¢strukcj⇧ PRINT(skrt to ?)przydaoby¢si❎, aəeby po naci③ni❎ciu dowolnego¢klawisza ukazywa si❎ kolejny napis,¢ktrego instrukcja umoəliwiaj⇧ca jego¢wy③wietlenie znajduje si❎ w kolejnym¢wierszu. W takim celu naleəy skorzysta⇨¢z instrukcji GET umoəliwiaj⇧cej odczyt¢z dowolnego urz⇧dzenia(w naszym wypad-¢ku klwiatury) jednego bajtu danych.¢Tuə pod naszym pierwszym napisem pisze-¢my np.¢130 OPEN #1,4,0,"K:" -otwarcie kanau¢ pierwszego dla¢ klawiatury¢140 GET #1,A -czekanie na naci-¢ ③ni❎cie dowolnego¢ klawisza¢¢ Po co to OPEN? Instrukcja GET musi¢by⇨ poprzedzona otwarciem pierwszego¢kanau IOCB. Numer kanau moəe by⇨ od¢1 do 7, ale najbezpieczniejszym jest¢zazwyczaj numer #1. W tym wypadku -ot-¢wierany jest pierwszy kana dla klawia-¢tury. To tak jak ze ③ciekami w podzie-¢miach miast -jeəeli b❎d⇧ zatkane, nic¢przez nie nie przeleci, a jeəeli otwa-¢rte moəna "przesa⇨" ... Po instrukcji¢GET #1,A najlepiej jest zamkn⇧⇨ kana,¢bo cholera jasna wie, co b❎dzie p♪niej¢w naszym programie, a zamkni❎cie kanau¢niczym nie przeszkadza -nawet jeəeli¢kana b❎dzie zamkni❎ty i b❎dziemy pr-¢bowa⇨ go zamkn⇧⇨ nie spowoduje to b❎-¢du. Tak wi❎c -zamkni❎cie kanau umoəli-¢wia funkcja CLOSE #numer kanau. Czyli:¢aəeby zamkn⇧⇨ kana np. numer #1 trze-¢ba napisa⇨: CLOSE #1 ...¢Caa funkcja czekania na dowolny kla-¢wisz winna wygl⇧da⇨ nast❎puj⇧co:¢130 OPEN #1,4,0,"K:"¢140 GET #1,A¢150 CLOSE #1¢i w linni 160 wprowadzamy dalsz⇧ cz❎③⇨¢programu ...¢¢ Czasami w programie przydaoby si❎¢zada⇨ pytanie "widzowi". Jest to wi❎c¢rwnoznaczne z wprowadzeniem danych¢przez "widza" do komputera. Pomy③lisz:¢tak⇧ operacj❎ wykonuje funkcja wcze③-¢niej opisana -GET. DObrze my③lisz, ale¢funkcja GET moəe pobra⇨ TYLKO JEDEN¢BAJT. A jeəeli zadane pytanie b❎dzie¢wymagao odpowiedzi skadaj⇧cej si❎¢z kilku liter to co? Do tego celu su-¢əy instrukcja INPUT. Umoəliwia ona¢wprowadzenie tekstu do tzw.zmiennej.¢Zmienna, suəy do przechowywania infor-¢macji. Dlatego teə funkcja INPUT skada¢si❎ : INPUT zmienna. Aby zmienn⇧ "otwo-¢rzy⇨" posuəy⇨ si❎ trzeba instrukcj⇧¢DIM. Suəy ona wa③nie do deklaracji¢zmiennej. Na pocz⇧tku naszego programu¢napiszmy: DIM A$(40) -oznacza ona "za-¢j❎cie" przez zmienn⇧ A$ 40 wolnych¢bajtw(znakw). Tak wi❎c do zminnej¢A$ moəna wprowadzi⇨ do 40 znakw. Natu-¢ralnie dugo③⇨ zmiennej moəe by⇨ dowol-¢na(ale nie wi❎ksza niə 32767 ...¢I teraz.. Napisanie w programie¢INPUT A$ spowoduje czekanie na wprowa-¢dzenie tekstu dla zmiennej A$. Proste?¢Ale. Przydaoby si❎ odczyta⇨ jako③ t❎¢nasz⇧ zmienn⇧. Np. jeəeli zadali③my¢rytanie czytelnikowi, ktrej odpowied♪¢miaa skada⇨ si❎ z odpowiedzi na TAK¢lub NIE, wwczas moəna waln⇧⇨ tak:¢¢10 DIM A$(3)¢20 ? "Czy seks jest fajny?"¢30 INPUT A$¢40 ? "Fajnie, ze";A$;" "¢ Powyəszy program spowoduje po wpisaniu¢odpowiedzi jako A$(INPUT A$) umieszcze-¢nie je w linii 40 po wyrazie "ze" .¢¢ Czasami niektrzy robi⇧ sobie jaja¢z naszym programem, powoduj⇧c jego b⇧d¢Naturalnie -zajmiemy si❎ teraz zabez-¢pieczeniami programw.¢¢ Najcz❎stszym b❎dem jest b⇧d 136 wy-¢woany przez Control+3. ⑧eby zapobiec¢takiemu syfowi musimy posuəy⇨ si❎ in-¢strukcj⇧ TRAP, ktra umoəliwia przej❎-¢cie kontroli nad programem w przypadku¢wyst⇧pienia b❎du. Wzr insrukcji to:¢TRAP linia -oznacza, əe w przypadku¢ wyst⇧pienia b❎du program¢ musi skoczy⇨ do "linii".Np.¢TRAP 40¢¢ Konkretny przykad:¢¢10 DIM A$(3)¢20 ? "Ile masz lat?"¢30 TRAP 60¢40 INPUT A$¢50 END¢60 ? "Nie rb sobie jaj" (Yo!Pigua!)¢70 GOTO 20¢¢ Drugim do③⇨ m❎cz⇧cym problemem jest¢przerwanie dziaania programu za pomoc⇧¢BREAKa. Na ten temat wiele byo wyla-¢nych sw w Bajtkach czy innych. Cz❎sto¢byo to zabezpieczenie w programie zaj-¢muj⇧cym po kilka wierszy. Ja proponuj❎¢bardzo prost⇧ instrukcj❎ zabezpieczaj⇧-¢c⇧ w stu procentach przed Breakiem.¢Jest to funkcja POKE 566,158, ktr⇧¢naleəy umie③ci⇨ w pierwszej linii na-¢szego programu.¢¢ Kolejnym problemem jest klawisz RESET.¢Aby po naci③ni❎ciu RESETu program wyko-¢nywa zimny start, wystarczy wpisa⇨ na¢pocz⇧tku programu instrukcj❎ POKE 580,1¢¢ To tyle! Dzisiaj zdobyte wiadomo③ci¢winne wystarczy⇨ do umiej❎tno③ci napi-¢sania programu:¢¢10 DIM A$(3)¢20 POKE 566,158:POKE 580,1:POKE 752,1¢30 ? "}":? "Czy lubisz seks?"¢40 TRAP 100¢50 INPUT A$¢60 ? "Fajnie, ze ";A$;"."¢70 FOR T=1 TO 800:NEXT T¢80 END¢100 ? "Nie rb sobie jaj!"¢110 OPEN #1,4,0,"K:"¢120 GET #1,A¢130 CLOSE #1¢140 GOTO 30¢¢ To wszystko!¢¢ Cubes¢